是htmlentities
防止PHP中的XSS的最佳解決方案?此外,我想允許簡單的標籤,如b
,i
,a
和img
。什麼是實施這個最好的解決方案?我確實考慮過bbcode,但發現如果執行不當,我也會遇到XSS問題。我該怎麼辦?歡迎任何好的第三方圖書館。PHP防止xss
編輯:
我只是想HTML淨化器,它失敗了這種情況。 Just see this example
是htmlentities
防止PHP中的XSS的最佳解決方案?此外,我想允許簡單的標籤,如b
,i
,a
和img
。什麼是實施這個最好的解決方案?我確實考慮過bbcode,但發現如果執行不當,我也會遇到XSS問題。我該怎麼辦?歡迎任何好的第三方圖書館。PHP防止xss
編輯:
我只是想HTML淨化器,它失敗了這種情況。 Just see this example
爲此,我會選擇HTML Purifier,是的,您也可以在那裏指定您的白名單標籤。
HTML淨化器是一個符合標準的 用PHP編寫的HTML過濾器庫。 HTML淨化器不僅會爲一個徹底的審覈移除所有 惡意代碼(更好地稱爲 XSS),
安全又寬容的白名單,它 也將確保您的文檔 符合標準,有些事只有 與實現有關W3C規範的全面的知識。
我知道在PHP語言一定功能爲,但我寧願一個專門的解決方案來代替。
請參閱我的編輯.. – aWebDeveloper 2011-02-27 10:24:35
看看自定義標記語言,如markdown(按計算器使用),reStructuredText,textile或類似lightweight markup languages
嘗試使用此代碼(它允許<i>
,<b>
和<del>
):
<?php
$html = '<b>Inline <del>context <div>No block allowed <great going </div></del></b>';
function escapeEveryOther(&$v, $k) {
if($k % 2 == 0) {
$v = htmlspecialchars($v);
}
}
$parts = preg_split('`(</?(?:b|i|del)>)`is', $html, -1, PREG_SPLIT_DELIM_CAPTURE);
array_walk($parts, 'escapeEveryOther');
$html = implode('', $parts);
然後通過$html
到HTMLPurifier修復不匹配的標籤開口和關閉。
它是如何失敗的情況? – gnur 2011-02-27 10:35:27
看看這個網站[https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet](https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet)然後看看這個網站[https ://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet](https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet)我認爲這些鏈接也很有趣:[http://code.google。 com/p/owasp-esapi-php /](http://code.google.com/p/owasp-esapi-php/)和[http://code.google.com/p/owasp-esapi-js /](http://code.google.com/p/owasp-esapi-js/) – chris 2013-02-07 23:10:49