You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
假设我们有一个评论系统。
用户 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 实体。
假设我们有一个评论系统。
用户 A 提交评论[沙发]到服务器,然后用户 B 来访问网站,看到了 A 的评论[沙发],这里没有 XSS。
恶意用户 H 提交评论[<script>console.log(document.cookie)</script>],然后用户 B 来访问网站,这段脚本在 B 的浏览器直接执行,恶意用户 H 的脚本就可以任意操作 B 的 cookie,而 B 对此毫无察觉。有了 cookie,恶意用户 H 就可以伪造 B 的登录信息,随意访问 B 的隐私了。而 B 始终被蒙在鼓里。
XSS 的成因以及如何避免
可能的原因;
$content 的内容,没有经过任何过滤,原样输出。
要解决这个原因,只需要后台输出的时候,将可疑的符号 < 符号变成 < (HTML实体)就行。
或者
content 内容又被原样输出了。解决办法就是不要自己拼 HTML,尽量使用 text 方法。如果一定要使用 HTML,就把可疑符号变成 HTML 实体。
转自知乎
The text was updated successfully, but these errors were encountered: