21,882
社区成员
发帖
与我相关
我的任务
分享
$str="<script>alert(\"haha\");</script>";
echo htmlspecialchars_decode($str);
alert()依旧会被触发。
所以,不想插入脚本肯定要使用htmlspecialchars将预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体。
【2】匹配具体标签也是很麻烦的。标签中间放一些注释就傻了。不过恶意使用preg_replace把所有的注释符号全部匹配表,之后再匹配是否存在script。这也是一个方法。
$preg_rule='/\!|\script|\-|/';
$data = preg_replace($preg_rule,"",$data); //data为客户端传来的字符串
除了注入脚本。还要小心SQL注入,这边有篇关于SQL注入的文章http://www.daimatree.com/dll_website/dll_showHTML.php?html_url=safe_SQL_Injection_Attack<script>
标签 也不是那么容易过滤的 比如我可以大小写混编 如 sCripT 活着通过通过注释
比如我要输入 javascript:alert(sb)
我可以这样
java<!---->script:alert(sb)
你直接匹配javascript就无法过滤 因为输出到浏览器上那段相当于html的注视
3.我可以通过字符转码的方式 10进制不行我就16进制 反正你的想办法绕开你的程序匹配就行
我当年在新浪工作那会 公司有自己开发的xss扫描工具 天天一帮子开发没事就坐那扫xss漏洞 就这也都不是百分之百能避免的 每周都会出现新的方式 真是道高一尺魔高一丈 有的方式你跟们就想不到