脚本宝典收集整理的这篇文章主要介绍了PHP XSS清理,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
什么是最好的safe1(),safe2(),safe3()和safe4()函数来避免UTS8编码页面的XSS?它在所有浏览器(特别是IE6)中也是安全的吗?
<body><?PHP echo safe1($xss)?></body> <body id="<?PHP echo safe2($xss)?>"></body> <script tyPE="text/javascript"> VAR a = "<?PHP echo safe3($xss)?>"; </script> <style type="text/css"> .myclass {width:<?PHP echo safe4($xss)?>} </style>
.
很多人说可以做的绝对最好的是:
// safe1 & safe2 $s = htMLentITies($s,ENT_QUOTES,"UTF-8"); // But how would you compare the above to: // https://github.COM/shadowhand/purifier // OR http://kohanaframework.org/3.0/guide/api/Security#xss_clean // OR is there an even better if not perfect solution?
.
// safe3 $s = mb_convert_encoding($s,"UTF-8","UTF-8"); $s = htmlentities($s,"UTF-8"); // How would you compare this to using using MysqL_real_escape_string($s)? // (Yes,I kNow this is a DB function) // Some other people also recommend calling json_encode() before passing to htmlentities // What's the best solution?
.
关于PHP和XSS的帖子很多.
大多数人只是说“使用HTMLPurifier”或“使用htmlspecialchars”,或者说错了.
其他人说使用OWASP – 但它非常慢.
我遇到的一些好帖子如下:
Do htmlspecialchars and mysql_real_escape_string keep my PHP code safe from injection?
htmlspecialchars()
取代safe1(),您应该使用HTMLPurifier
来清理完整的HTML blob.它会删除不需要的属性,标签,特别是任何javascriptish.是的,它很慢,但它涵盖了所有小边缘情况(即使是旧的IE版本),它允许安全的HTML用户代码段重用.但请查看http://htmlpurifier.org/comparison的替代品. – 如果你真的只想在那里显示原始用户文本(没有过滤的html),那么htmlspecialchars(strip_tags($src))
实际上可以正常工作.
safe3()尖叫正则表达式.在这里,您实际上只能将白名单应用于您真正想要的任何内容:
var a = "<?PHP echo PReg_replace('/[^-\w\d .,]/',"",$xss)?>";
你当然可以在这里使用json_encode来获得一个完全有效的JS语法和变量.但是你刚刚将该字符串的可利用性推迟到你的JS代码中,然后你必须在那里照看它.
以上是脚本宝典为你收集整理的PHP XSS清理全部内容,希望文章能够帮你解决PHP XSS清理所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。