𝗥𝗲𝗮𝗰𝘁 𝘃𝘀. 𝗫𝗦𝗦: 𝗣𝗮𝗹𝗲 𝗔𝗺𝗯𝗮𝗽𝗼 𝗞𝗶𝗻𝗴𝗮 𝗛𝘂𝗶𝘀𝗵𝗶𝗮
React ni salama kwa asili. Inafanya escaping ya thamani kwenye JSX ili kuzuia mwingiliano mwingi wa skripti (script injections). Lakini hii inatengeneza hisia ya uongo ya usalama. React inapunguza hatari ya XSS, lakini haiondoi kabisa.
Kuna aina tatu kuu za mashambulizi ya XSS:
- Reflected XSS: Mshambuliaji hutuma kiungo (link) chenye madhara. Seva hutuma skripti hiyo kwa mtumiaji mara moja. Kivinjari (browser) hutekeleza skripti hiyo kwa sababu inaonekana kama imetoka kwenye tovuti inayofahamika.
- Stored XSS: Mshambuliaji huhifadhi skripti kwenye seva yako. Inakaa kwenye kanzi data (database), maoni (comments), au kumbukumbu (logs). Kila mtumiaji anayetazama maudhui hayo hutekeleza skripti hiyo.
- DOM Based XSS: Shambulio hutokea kikamilifu ndani ya kivinjari. Mshambuliaji hubadilisha vigezo vya URL (URL parameters) au ingizo za upande wa mteja (client side inputs) ili kufanya JavaScript yako ifanye kazi vibaya.
React inakulinda nini hasa?
- Automatic Escaping: React inachukulia maandishi (strings) kama maandishi ya kawaida. Ukijaribu kuingiza tag ya skripti kwenye JSX, React itaonyesha maandishi hayo badala ya kutekeleza kodi hiyo.
- Safe Rendering: React inadhibiti jinsi maudhui yanavyoonekana. Hii inapunguza uhitaji wako wa kutumia API hatari za kivinjari.
- Less DOM Manipulation: React inadhibiti maboresho (updates). Huhitaji kutumia
document.write()auinnerHTMLmara kwa mara.
React inatoa njia mbadala za kutokea (escape hatches). Ukizitumia vibaya, unatengeneza mianya ya usalama (vulnerabilities).
Tahadhari na makosa haya:
dangerouslySetInnerHTML: Sifa hii (property) inaambia React kuruka hatua ya escaping. Inaingiza HTML vilevile ilivyo. Ikiwa maudhui si safi, mshambuliaji atashinda. Tumia DOMPurify kusafisha maudhui yako kwanza.- Direct DOM Manipulation: Ukitumia
element.innerHTMLpamoja na ingizo la mtumiaji, unavuka usalama wote wa React. - Third Party Libraries: Baadhi ya zana za nje zinaweza zisifuate sheria zilezile za usalama.
React inatoa zana za usalama. Lazima uzitumie kwa usahihi. Usalama ni jukumu lako.
Chanzo: https://dev.to/ayomidejhay/react-vs-xss-where-the-guardrails-end-6p2