php - XSS: REQUEST_URI run through htmlspecialchars() - then replacing & with & - enough to prevent XSS injection? -


परिदृश्य:

मैं इसे बदलना चाहूंगा: " '& Lt; & gt; के साथ & amp; quot; & amp; # 039; & amp; लिटी; & amp; gt; लेकिन "& amp; चरित्र रखें"

मैं जिस स्ट्रिंग के साथ काम कर रहा हूं वह यूआरएल है और मैं यूआरएल पैरामीटर को & amp; से अलग करना चाहता हूं, & amp; amp; नहीं < / P>

उदाहरण समाधान:

  $ url = "/ some / path? A = 123 & amp; b = 456"; // $ _SERVER से [ "REQUEST_URI"]; $ url = htmlspecialchars ($ url, ENT_QUOTES, 'आईएसओ -885 9-1', सच है); $ url = str_replace ('& amp; amp;', '& amp;', $ url);   

प्रश्न:

अगर मैं अपने पृष्ठ पर $ url का उपयोग करता हूं (जैसे echo $ url; एचटीएमएल या जावास्क्रिप्ट के अंदर) का उपयोग एक्सएसएस द्वारा किया जा सकता है?

समान प्रश्न:

; htmlspecialchars () लेकिन मुझे जवाब नहीं मिल सका है कि "& amp;" चरित्र (और यह अनुमति दे सकते हैं htmlentities) XSS करने के लिए आपको बेनकाब कर सकते हैं।

  • < / Ul>

    सिजमेन रुउहोफ ने यह रोचक मुद्दा बनाया है जो मुझे लगता है कि प्रासंगिक है :

    'ए' टैग के 'href' विशेषता की तरह कुछ टैग के विशेषताओं में जावास्क्रिप्ट मूल्यांकन के खिलाफ 'ENT_QUOTES' विकल्प आपकी सुरक्षा नहीं करता है। नीचे दिए गए लिंक पर क्लिक करते समय दिए गए जावास्क्रिप्ट को निष्पादित किया जाएगा:

      & lt; php $ _GET ['a'] = 'जावास्क्रिप्ट: अलर्ट (document.cookie)' ; $ Href = htmlEntities ($ _GET ['ए'], ENT_QUOTES); प्रिंट "& lt; a href = '$ href' & gt; लिंक & lt; / a & gt;"; # में परिणाम: & lt; a href = 'javascript: alert (document.cookie)' & gt; लिंक & lt; / a & gt; ? & Gt;    

Comments