[英]Check if HTML contains JavaScript in PHP
我需要檢查用戶提交的HTML是否包含任何JavaScript。 我正在使用PHP進行驗證。
如果您想保護自己免受跨站點腳本(XSS)的攻擊,那么您最好使用白名單而不是黑名單 。 因為在尋找XSS攻擊時需要考慮太多方面 。
只需列出您要允許的所有HTML標記和屬性,然后刪除/轉義所有其他標記/屬性。 對於那些可用於XSS攻擊的屬性,請驗證值以僅允許無害值。
采用不同的方法並使用HTML Purifier之類的東西來過濾掉你不想要的任何東西可能會更好。 我認為在沒有正確解析HTML的情況下安全地刪除javascript的任何可能性是非常困難的。
好吧,讓我們不要在這里天真:
<script> "<!-- </script> -->"; document.write("hello world"); </script>
<script> "<!-- </script> -->"; document.write("hello world"); </script>
(應該通過regexadvice建議的過濾器)
過濾掉javascript是一個安全問題,這意味着你需要徹底和正確地完成它,而不是一些快速入侵。
您可以使用正則表達式刪除Pawka聲明的腳本標記。 我在這里發現了一個帖子。
基本上它是:
$list=preg_replace('#<script[^>]*>.*?</script>#is','',$list);
代碼來自該頁面,不是我寫的。
您需要掃描<script>
標簽,但您還需要掃描像onclick=""
或onmouseover=""
等屬性...可以使用javascript而不需要腳本標記。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.