下面是一個簡化我的代碼:在DOM中使用GET參數的安全方式?
$html = "<a class='myclass' href='/path?arg='" . $_GET['param']. "'>mylink</a>";
今天,我正在讀關於XSS攻擊,我覺得我的代碼是在XSS攻擊。無論我不確定,但它聞到了這一點。
無論如何,如果我的想法是正確的,我該如何避免?基於一些研究,一種方法是使用strip_tags()
。現在我想知道,我可以依靠它嗎?這足夠好嗎?
下面是一個簡化我的代碼:在DOM中使用GET參數的安全方式?
$html = "<a class='myclass' href='/path?arg='" . $_GET['param']. "'>mylink</a>";
今天,我正在讀關於XSS攻擊,我覺得我的代碼是在XSS攻擊。無論我不確定,但它聞到了這一點。
無論如何,如果我的想法是正確的,我該如何避免?基於一些研究,一種方法是使用strip_tags()
。現在我想知道,我可以依靠它嗎?這足夠好嗎?
,每當你想輸出從用戶傳來的參數,您應該使用htmlspecialchars()。
$variable = htmlspecialchars($_GET['param'], ENT_QUOTES, 'UTF-8');
此功能用於獲取正確的HTML編碼。他正在構建一個URL。事實上,空格,問號和其他一些不會逃脫。他的網址將不正確,如果他使用htmlspecialchars。 –
這是關於編碼一些與正確的函數。 總是看你想要的產品,然後選擇編碼器!
樣品:
當你正在構建HTML其良好的使用用htmlspecialchars和/或ヶ輛。
當你構建SQL時,它很適合用於mysql PDO :: quote或mysqli_real_escape_string。
答:
在你的情況,你正在建立一個網址。爲此,您需要使用urlencode。
此外,您還需要轉義它以糾正與htmlentities的HTML,因爲您正在下一步構建HTML。 請參閱PHP手冊中的示例 - > urlencode鏈接(示例#2)。
嘿,是的,你可以自己嘗試一下。只需通過贊成你的?param =值。正如這個答案指出:https://stackoverflow.com/questions/3605629/prevent-xss-with-strip-tags你有2個選項。 strip_tags或編碼HTML。無論哪種方式都會阻止XSS。 – IsThisJavascript
strip_tags()在你的情況下是不夠的,想象一下當你調用'index.php?param ='onclick ='alert(1)'時你的輸出變成什麼樣子,所以你需要的是htmlspecialchars() –
@ WillParky93讀取任務,回答你仔細地鏈接,它清楚地表明,strip_tags()不足以防止XSS –