𝗥𝗲𝗮𝗰𝘁 𝘃𝘀. 𝗫𝗦𝗦: రక్షణ కవచాలు ఎక్కడ ముగిసిపోతాయి
React డిఫాల్ట్గా సురక్షితంగా ఉంటుంది. స్క్రిప్ట్ ఇంజెక్షన్లను (script injections) అడ్డుకోవడానికి ఇది JSXలో విలువలను ఎస్కేప్ (escape) చేస్తుంది. కానీ ఇది భద్రత గురించి తప్పుడు భావనను కలిగిస్తుంది. React XSS ప్రమాదాన్ని తగ్గిస్తుంది, కానీ దానిని పూర్తిగా అంతం చేయదు.
XSS దాడులలో మూడు ప్రధాన రకాలు ఉన్నాయి:
- Reflected XSS: ఒక అటాకర్ హానికరమైన లింక్ను పంపిస్తారు. సర్వర్ వెంటనే ఆ స్క్రిప్ట్ను వినియోగదారునికి తిరిగి పంపిస్తుంది. అది నమ్మదగిన సైట్ నుండి వచ్చినట్లు అనిపించడం వల్ల బ్రౌజర్ ఆ స్క్రిప్ట్ను రన్ చేస్తుంది.
- Stored XSS: అటాకర్ మీ సర్వర్లో ఒక స్క్రిప్ట్ను సేవ్ చేస్తారు. ఇది మీ డేటాబేస్, కామెంట్లు లేదా లాగ్లలో ఉంటుంది. ఆ కంటెంట్ను చూసే ప్రతి వినియోగదారుడు ఆ స్క్రిప్ట్ను రన్ చేస్తారు.
- DOM Based XSS: ఈ దాడి పూర్తిగా బ్రౌజర్లోనే జరుగుతుంది. మీ JavaScript తప్పుగా పనిచేసేలా చేయడానికి అటాకర్ URL పారామీటర్లను లేదా క్లయింట్ సైడ్ ఇన్పుట్లను మారుస్తారు.
React నిజంగా మిమ్మల్ని దేని నుండి రక్షిస్తుంది?
- Automatic Escaping: React స్ట్రింగ్స్ను ప్లెయిన్ టెక్స్ట్గా పరిగణిస్తుంది. మీరు JSXలోకి స్క్రిప్ట్ ట్యాగ్ను ఇంజెక్ట్ చేయడానికి ప్రయత్నిస్తే, React కోడ్ను రన్ చేయకుండా కేవలం ఆ టెక్స్ట్ను మాత్రమే చూపిస్తుంది.
- Safe Rendering: కంటెంట్ ఎలా కనిపించాలో React నిర్వహిస్తుంది. దీనివల్ల ప్రమాదకరమైన బ్రౌజర్ APIలను ఉపయోగించాల్సిన అవసరం తగ్గుతుంది.
- Less DOM Manipulation: అప్డేట్లను React చూసుకుంటుంది. మీరు తరచుగా
document.write()లేదాinnerHTMLఉపయోగించాల్సిన అవసరం లేదు.
React కొన్ని 'ఎస్కేప్ హ్యాచెస్' (escape hatches) అందిస్తుంది. మీరు వాటిని తప్పుగా ఉపయోగిస్తే, భద్రతా లోపాలను (vulnerabilities) సృష్టిస్తారు.
ఈ తప్పుల పట్ల జాగ్రత్తగా ఉండండి:
dangerouslySetInnerHTML: ఈ ప్రాపర్టీ ఎస్కేపింగ్ను వదిలేయమని Reactకి చెబుతుంది. ఇది HTMLని ఉన్నది ఉన్నట్లుగా ఇన్సర్ట్ చేస్తుంది. కంటెంట్ క్లీన్గా లేకపోతే, అటాకర్ విజయం సాధిస్తారు. ముందుగా మీ కంటెంట్ను శానిటైజ్ (sanitize) చేయడానికి DOMPurifyని ఉపయోగించండి.- Direct DOM Manipulation: మీరు యూజర్ ఇన్పుట్తో
element.innerHTMLని ఉపయోగిస్తే, మీరు React భద్రతను పూర్తిగా పక్కన పెట్టినట్లవుతుంది. - Third Party Libraries: కొన్ని ఎక్స్టర్నల్ టూల్స్ అదే భద్రతా నియమాలను పాటించకపోవచ్చు.
భద్రత కోసం React అవసరమైన సాధనాలను అందిస్తుంది. మీరు వాటిని సరిగ్గా ఉపయోగించాలి. భద్రత అనేది మీ బాధ్యత.
Source: https://dev.to/ayomidejhay/react-vs-xss-where-the-guardrails-end-6p2