回答
採取不同的方法並使用類似HTML Purifier的東西來過濾掉任何你不想要的東西可能會更好。我認爲在沒有正確解析HTML的情況下安全地移除任何javascript的可能性將會非常困難。
+1使用現有的流行庫。 HTML解析很難*,使用你自己的hacked-up正則表達式是失敗的祕訣。我不能保證HTML淨化器是安全的(過去一直存在漏洞),但是它會比你第一次嘗試的時候要早。 – bobince 2009-10-01 12:03:35
您可以使用正則表達式將腳本標記移除爲Pawka狀態。 我在這here找到了一個線程。
基本上它是:
$list=preg_replace('#<script[^>]*>.*?</script>#is','',$list);
代碼是從網頁,而不是我寫的。
您需要掃描<script>
標籤,但您還需要掃描屬性,如onclick=""
或onmouseover=""
等...可以有javascript而不需要腳本標記。
'' – OJW 2009-10-01 15:04:22
如果您希望保護自己免受跨站點腳本(XSS)的攻擊,那麼您最好使用whitelist而不是blacklist。因爲也有many aspects you need to consider when looking for XSS attacks。
只需製作一個您想要允許的所有HTML標籤和屬性的列表,並刪除/轉義所有其他標籤/屬性。對於那些可用於XSS攻擊的屬性,驗證這些值只允許無害的值。
OK,讓我們不是所有的天真在這裏:
<script> "<!-- </script> -->"; document.write("hello world"); </script>
(應當經regexadvice建議的過濾器)
過濾出JavaScript是一種安全關鍵的事情,這意味着你需要徹底地做到這一點並適當地,不是一些快速入侵。
- 1. 檢查JavaScript對象是否包含X?
- 2. 檢查鏈接是否包含javascript
- 3. PHP - 檢查函數是否包含
- 4. PHP檢查MySQL表是否包含值
- 5. php - 檢查結果是否包含值
- 6. 如何使用PHP檢查textarea的值是否包含HTML?
- 7. 如何使用PHP檢查textarea的值是否包含HTML?
- 8. 檢查數組中是否包含php中的值
- 9. 檢查是否包含jQuery
- 10. 檢查是否行包含/ *
- 11. 如何檢查javascript變量中的值是否包含數字?
- 12. 檢查一個變量是否包含Javascript中的數值?
- 13. 檢查文本字段是否包含javascript中的字母
- 14. 如何檢查數組是否包含Javascript中的字符串?
- 15. 檢查頁面是否包含PHP中的一些文本
- 16. PHP檢查(POST)中的變量是否包含任何數值
- 17. PHP:檢查對象是否包含數組中的字符串
- 18. PHP:檢查對象是否包含數組中的值
- 19. JavaScript/PHP自動檢查是否選中
- 20. 檢查文件中的行是否包含Bash中的模式
- 21. 檢查包含html的字符串是否實際爲空
- 22. NodeJS:安全 - 檢查上傳的文件是否包含HTML
- 23. 如何檢查html是否包含與iMacros的某個數字
- 24. 檢查查詢是否包含列表中的內容
- 25. 如何檢查字符串中是否包含字符javascript中的任何點
- 26. 的Javascript:檢查是否頁面包含一個特定的div
- 27. PHP SQL查詢檢查是否包含INSERT
- 28. 檢查是否在PHP中檢查了html按鈕
- 29. 檢查路徑是否包含使用javascript的圖像
- 30. 檢查是否實際需要包含的JavaScript文件
它可能是一個更好的主意,定義一個接受的HTML子集(標籤,屬性和內容),並去除任何不被接受的東西。它可以節省一些令人討厭的驚喜。 – 2009-10-01 10:36:35
你是否絕對需要檢測JavaScript代碼的存在,或者只是確保代碼被消毒/不可執行? – 2009-10-01 10:37:11
理想情況下,如果它包含任何類型的javascript,我會在提交階段向提交HTML的用戶拋出錯誤,並且從不提交它。 – David 2009-10-01 12:08:56