Open
Description
假设我们有一个评论系统。
用户 A 提交评论[沙发]到服务器,然后用户 B 来访问网站,看到了 A 的评论[沙发],这里没有 XSS。
恶意用户 H 提交评论[<script>console.log(document.cookie)</script>],然后用户 B 来访问网站,这段脚本在 B 的浏览器直接执行,恶意用户 H 的脚本就可以任意操作 B 的 cookie,而 B 对此毫无察觉。有了 cookie,恶意用户 H 就可以伪造 B 的登录信息,随意访问 B 的隐私了。而 B 始终被蒙在鼓里。
XSS 的成因以及如何避免
可能的原因;
- 后台模板问题
<p>
评论内容:<?php echo $content; ?>
</p>
$content 的内容,没有经过任何过滤,原样输出。
要解决这个原因,只需要后台输出的时候,将可疑的符号 < 符号变成 < (HTML实体)就行。
- 前端代码问题
$p.html(content)
或者
$p = $('<p>'+ content +'</p>')
content 内容又被原样输出了。解决办法就是不要自己拼 HTML,尽量使用 text 方法。如果一定要使用 HTML,就把可疑符号变成 HTML 实体。
Metadata
Metadata
Assignees
Labels
No labels