是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