§

ఇన్‌పుట్

మోడ్
ఎంటిటీ స్టైల్
ఎన్‌కోడ్ స్కోప్
§

అవుట్‌పుట్

Hyderabad మరియు Bengaluru లో వెబ్ డెవలప్‌మెంట్ చేసే తెలుగు ప్రొగ్రామర్లు యూజర్-సప్లైడ్ వచనం సర్వర్-రెండర్డ్ పేజ్ లేదా ఇమెయిల్ టెంప్లేట్‌లో చేరినప్పుడు HTML entity ఎన్‌కోడింగ్ చేస్తారు. OWASP XSS Prevention Cheat Sheet HTML body context కోసం entity ఎన్‌కోడింగ్‌ను Rule #1 గా నిర్ణయించింది. React, Angular, లేదా Django తో పని చేసే తెలుగు డెవలపర్లు ఆటో-ఎస్కేప్ ఆపిన చోట్ల ఏ అవుట్‌పుట్ వస్తుందో ధృవీకరించడానికి ఈ in-browser codec ఉపయోగపడుతుంది.

HTML entity ఎన్‌కోడింగ్ ఎలా పనిచేస్తుంది

HTML ఎంటిటీ అనేది బ్రౌజర్ ఒకే అక్షరంగా తిరిగి పార్స్ చేసే అక్షర రెఫరెన్స్. అయిదు రిజర్వ్డ్ HTML అక్షరాలు (<, >, &, ", ') వచనం HTML గా రెండర్ చేయబడినప్పుడు ఎల్లప్పుడూ ఎన్‌కోడింగ్ అవసరం; మిగతా అన్నీ ఆప్షనల్ మరియు డాక్యుమెంట్ ఎన్‌కోడింగ్ పై ఆధారపడతాయి.

  1. మోడ్ మరియు స్కోప్ ఎంచుకోండి. ఎన్‌కోడ్ మోడ్ మీ ఇన్‌పుట్‌ను అక్షరం అక్షరంగా వాక్ చేస్తుంది. డీకోడ్ మోడ్ ఎంటిటీ పాటర్న్లు వెతుకుతూ ఇన్‌పుట్‌ను వాక్ చేస్తుంది. స్కోప్ టోగుల్ అయిదు HTML-సేఫ్ అక్షరాలు మాత్రమే ఎన్‌కోడ్ అవుతాయా, లేదా ప్రతి నాన్-ASCII కోడ్ పాయింట్ కూడా రీరైట్ అవుతుందా అని నిర్ణయిస్తుంది.
  2. ఎంటిటీ స్టైల్ ఎంచుకోండి. నేమ్డ్ ఎంటిటీలు (&copy;) సోర్స్‌లో బాగా చదివిపోతాయి. డెసిమల్ రెఫరెన్సులు (&#169;) మరియు హెక్స్ రెఫరెన్సులు (&#xA9;) పేరు అవసరం లేకుండా ప్రతి Unicode కోడ్ పాయింట్ కలిగి ఉంటాయి. పాత ఇమెయిల్ క్లయింట్లు మరియు XML పార్సర్లు న్యూమరిక్ ఫారమ్లకు ప్రాధాన్యత ఇస్తాయి.
  3. ఇన్‌పుట్ వాక్ చేయండి. ఎన్‌కోడ్ సమయంలో, మేము ప్రతి కోడ్ పాయింట్ చదివి దాదాపు 200 సాధారణ నేమ్డ్ ఎంటిటీల బిల్ట్-ఇన్ టేబుల్‌తో చెక్ చేస్తాం. మిస్సులు న్యూమరిక్‌కు ఫాల్‌బ్యాక్ అవుతాయి. డీకోడ్ సమయంలో, మేము ఒకే రెగెక్స్‌తో స్క్యాన్ చేస్తాం, అది ఒకే పాస్‌లో &name;, &#NNN;, మరియు &#xHH; మ్యాచ్ చేస్తుంది.
  4. అక్షరాలకు మ్యాప్ చేయండి. నేమ్డ్ మ్యాచులు రివర్స్ టేబుల్ ద్వారా రిజాల్వ్ అవుతాయి. న్యూమరిక్ మ్యాచులు బేస్ 10 లేదా బేస్ 16 తో String.fromCodePoint ద్వారా వెళ్తాయి. తెలియని నేమ్డ్ ఎంటిటీలు తాకబడకుండా వదిలిపెట్టబడతాయి, కాబట్టి పాక్షిక ఇన్‌పుట్ నష్టం లేకుండా రౌండ్-ట్రిప్ అవుతుంది.
  5. లైవ్ మోడ్. లైవ్ మోడ్ టోగుల్ చేయడం ద్వారా ప్రతి కీస్ట్రోక్ 150 ms డీబౌన్స్‌తో కన్వర్షన్ రీ-రన్ చేస్తుంది. మీరు స్నిప్పెట్ ట్వీక్ చేస్తూ టెంప్లేట్‌లో పేస్ట్ చేయడానికి ముందు తక్షణ ఫీడ్‌బ్యాక్ కావాలనుకున్నప్పుడు ఉపయోగకరంగా ఉంటుంది.

HTML ఎంటిటీలు ఎందుకు ఎన్‌కోడ్ చేయాలి

  • యూజర్ ఇన్‌పుట్ లేఔట్ విచ్ఛిన్నం చేయడం ఆపండి. యూజర్ కామెంట్ బాక్స్‌లో < టైప్ చేసినప్పుడు, ఆ వచనాన్ని నేరుగా HTML లో వేయడం పేజ్ మిగతా భాగాన్ని రీరైట్ చేస్తుంది. ముందు రిజర్వ్డ్ అక్షరాలు ఎన్‌కోడ్ చేయడం వల్ల బ్రౌజర్ ట్యాగ్ ప్రారంభంగా పార్స్ చేయడానికి బదులు అక్షరాన్ని రెండర్ చేస్తుంది.
  • అట్రిబ్యూట్ విలువలు చెల్లుబాటు అయ్యేలా ఉంచండి. HTML అట్రిబ్యూట్‌లో కొటేడ్ స్ట్రింగ్ ఎంబెడ్ చేయడానికి ఎంబెడెడ్ కొటేషన్‌ను &quot; (డబుల్-కొటేడ్ attrs కోసం) లేదా &#39; (సింగిల్-కొటేడ్) తో భర్తీ చేయాల్సి ఉంటుంది. లేకపోతే పార్సర్ అట్రిబ్యూట్ ముందే మూసివేసి మిగతా లైన్ స్ట్రే మార్కప్ అవుతుంది.
  • నిల్వ చేయబడిన డేటాలో యాదృచ్ఛిక HTML నిష్క్రియం చేయండి. లాగ్లు, బగ్ రిపోర్ట్లు, మరియు చాట్ ఎక్స్‌పోర్ట్లలో తరచుగా నిజమైన యాంగిల్ బ్రాకెట్లు మరియు యాంపర్శ్యాండ్లు ఉంటాయి. డాక్యుమెంటేషన్ పేజ్‌లో పేస్ట్ చేయడానికి ముందు డంప్‌ను entity-ఎన్‌కోడింగ్ చేయడం వల్ల ఆ కాపీ రెండరర్ ట్రిగర్ చేయడానికి బదులు వచనంగా కనిపిస్తుంది.
  • కోడ్ స్నిప్పెట్లు సురక్షితంగా షేర్ చేయండి. బ్లాగ్ పోస్ట్, ఇమెయిల్, లేదా Slack మెసేజ్‌లో <script>alert(1)</script> వంటి ఉదాహరణ ట్యాగ్ పోస్ట్ చేయడానికి బ్రాకెట్లు ఎన్‌కోడ్ చేయాల్సి ఉంటుంది, తద్వారా స్నిప్పెట్ రన్ అవడానికి బదులు డిస్‌ప్లే అవుతుంది. అదే టెక్నిక్ RSS ఫీడ్ బాడీలు మరియు JSON-LD `description` ఫీల్డ్లకు కవర్ చేస్తుంది.

సాధారణ అప్లికేషన్లు

Entity ఎన్‌కోడింగ్ రన్‌టైమ్‌లో రా వచనం HTML లో కంపోజ్ చేయబడే చోటెల్లా కనిపిస్తుంది — ఫ్రేమ్‌వర్క్ సాధారణంగా మీ కోసం నిర్వహించినప్పటికీ, అది చేయని క్షణాల్లో మాన్యువల్ టూల్ ఉపయోగకరంగా ఉంటుంది.

  • సర్వర్-రెండర్డ్ టెంప్లేట్లు: Jinja2, ERB, Twig, మరియు Handlebars డిఫాల్ట్‌గా ఆటో-ఎస్కేప్ చేస్తాయి, కానీ రా బ్లాక్లు మరియు `safe` మార్కర్లు అది ఆపుతాయి — codec ఎస్కేప్ ఏ అవుట్‌పుట్ తయారు చేసేదో నిర్ధారించడానికి అనుమతిస్తుంది.
  • ఇమెయిల్ మరియు న్యూస్‌లెటర్ రచన: చాలా ESP టెంప్లేటింగ్ ఇంజిన్లు మెర్జ్ ఫీల్డ్లు ఆటో-ఎస్కేప్ చేయవు, కాబట్టి యూజర్-సప్లైడ్ పేర్లలో స్మార్ట్ కొటేషన్లు మరియు కాపీరైట్ గ్లిఫ్స్ ముందస్తుగా ఎన్‌కోడ్ చేయాల్సి ఉంటుంది.
  • డాక్యుమెంటేషన్ మరియు కోడ్ శాంపిల్లు: Markdown బ్లాగ్ పోస్ట్ లేదా స్టాటిక్-సైట్ స్నిప్పెట్‌లో ఉదాహరణ HTML ట్యాగ్ పేస్ట్ చేయడానికి బ్రాకెట్లు ఎన్‌కోడ్ చేయాల్సి ఉంటుంది, తద్వారా రెండరర్ దాన్ని కనిపించే వచనంగా చూస్తుంది.

పని చేసిన ఉదాహరణ

మోడ్ ఎన్‌కోడ్, స్టైల్ నేమ్డ్, స్కోప్ మినిమల్‌తో ఇన్‌పుట్‌లో <script>alert('hi')</script> పేస్ట్ చేయండి. అవుట్‌పుట్ &lt;script&gt;alert(&#39;hi&#39;)&lt;/script&gt; చదివిస్తుంది. స్టైల్‌ను న్యూమరిక్ హెక్స్‌కు మారించండి మరియు అదే ఇన్‌పుట్ &#x3C;script&#x3E;alert(&#x27;hi&#x27;)&#x3C;/script&#x3E; తయారు చేస్తుంది. మోడ్ డీకోడ్‌కు మార్చి, ఎన్‌కోడ్ స్ట్రింగ్ తిరిగి పేస్ట్ చేయండి, మరియు అసలు ట్యాగ్ అలాగే తిరిగి వస్తుంది.

FAQ

HTML ఎంటిటీలు అంటే ఏమిటి?

HTML ఎంటిటీలు అనేవి బ్రౌజర్ పేజ్ పార్స్ చేసినప్పుడు ఒకే అక్షరాలకు సబ్‌స్టిట్యూట్ చేసే అక్షర రెఫరెన్సులు. అవి మూడు ఫారమ్లలో వస్తాయి: నేమ్డ్ (& కోసం &amp; వంటివి), డెసిమల్ న్యూమరిక్ (&#38;), మరియు హెక్స్ న్యూమరిక్ (&#x26;). అయిదు రిజర్వ్డ్ HTML అక్షరాలు (<, >, &, ", ') వచనం HTML లో వేయబడిన ప్రతిసారీ ఎన్‌కోడింగ్ అవసరం. మిగతా దాదాపు 2,225 నేమ్డ్ ఎంటిటీలు చిహ్నాలు, యాక్సెంట్లు, మరియు గ్రీక్ అక్షరాలు కవర్ చేస్తాయి కానీ డాక్యుమెంట్ ఎన్‌కోడింగ్ UTF-8 అయిన తర్వాత ఆప్షనల్.

నేమ్డ్ వర్సెస్ న్యూమరిక్ ఎంటిటీలు ఎప్పుడు ఉపయోగించాలి?

సోర్స్ స్పష్టంగా చదవాలనుకున్నప్పుడు నేమ్డ్ ఎంటిటీలు ఉపయోగించండి (టెంప్లేట్‌లో &copy; రివ్యూ చేసే మానవుడు తక్షణం అర్థం చేసుకుంటారు). కన్స్యూమర్ పాత లేదా ఖచ్చితంగా ఉన్నప్పుడు న్యూమరిక్ (డెసిమల్ లేదా హెక్స్) ఉపయోగించండి — XML పార్సర్లు, లెగసీ ఇమెయిల్ క్లయింట్లు, మరియు కొన్ని ఫీడ్ రీడర్లు HTML5 నేమ్డ్ ఎంటిటీల చిన్న సబ్‌సెట్ మాత్రమే గుర్తిస్తాయి, అన్నీ న్యూమరిక్ ఫారమ్లు గుర్తిస్తాయి.

డీకోడింగ్ & వంటి హెక్స్ ఎంటిటీలు నిర్వహిస్తుందా?

అవును. డీకోడర్ ఒకే పాస్‌లో మూడు ఎంటిటీ ఫారమ్లన్నీ మ్యాచ్ చేసే ఒకే రెగెక్స్ ఉపయోగిస్తుంది: &name;, &#NNN;, మరియు &#xHH;. న్యూమరిక్ మ్యాచులు బేస్ 10 లేదా బేస్ 16 ఉపయోగించి String.fromCodePoint తో రిజాల్వ్ చేయబడతాయి. మిక్స్డ్ ఇన్‌పుట్ (అదే స్ట్రింగ్‌లో నేమ్డ్ మరియు న్యూమరిక్) సరిగ్గా డీకోడ్ అవుతుంది, మరియు తెలియని పేర్లు లిటరల్ వచనంగా వదిలిపెట్టబడతాయి.

ఇది అన్‌ట్రస్టెడ్ ఇన్‌పుట్ తో ఉపయోగించడానికి సురక్షితమా?

codec అనేది బ్రౌజర్-మాత్రమే మరియు మీ ఇన్‌పుట్ ఎక్కడికీ పంపదు. అవుట్‌పుట్ ఎంబెడ్ చేయడానికి సురక్షితమో కాదో సందర్భం పై ఆధారపడుతుంది. Entity ఎన్‌కోడింగ్ HTML body మరియు attribute-value సందర్భాలు నిర్వహిస్తుంది, ఇది OWASP Rule #1 కేస్ కవర్ చేస్తుంది. JavaScript సందర్భాలు (ఇన్‌లైన్ ఈవెంట్ హ్యాండ్లర్లు, `<script>` బ్లాక్లు), CSS సందర్భాలు, మరియు URL సందర్భాలు ఒక్కొక్కటికి వాటి సొంత ఎన్‌కోడింగ్ రూల్స్ అవసరం — entity ఎన్‌కోడింగ్ అక్కడ సరిపోదు. సర్వర్-సైడ్ డిఫెన్స్ ఇన్ డెప్త్ కోసం, దీన్ని DOMPurify లేదా మీ ఫ్రేమ్‌వర్క్ ఆటో-ఎస్కేప్ వంటి కాంటెక్స్ట్-అవేర్ టెంప్లేటింగ్ ఇంజిన్‌తో జత చేయండి.

బ్రౌజర్-సైడ్ entity ఎన్‌కోడింగ్ యూజర్ ఇన్‌పుట్ మరియు రెండర్డ్ HTML మధ్య బౌండరీలో ఉంటుంది. స్థానికంగా కన్వర్షన్ చేయడం వల్ల మీ ఫ్రేమ్‌వర్క్ ఏ అవుట్‌పుట్ ఇచ్చేదో సానిటీ-చెక్ చేయవచ్చు, అసలు వచనాన్ని మూడవ-పక్ష టూల్‌కు ఎప్పుడూ పంపకుండా.