Skip to content

XSS #35

Open
Open
XSS#35
@incuisting

Description

@incuisting

假设我们有一个评论系统。
用户 A 提交评论[沙发]到服务器,然后用户 B 来访问网站,看到了 A 的评论[沙发],这里没有 XSS。

恶意用户 H 提交评论[<script>console.log(document.cookie)</script>],然后用户 B 来访问网站,这段脚本在 B 的浏览器直接执行,恶意用户 H 的脚本就可以任意操作 B 的 cookie,而 B 对此毫无察觉。有了 cookie,恶意用户 H 就可以伪造 B 的登录信息,随意访问 B 的隐私了。而 B 始终被蒙在鼓里。

XSS 的成因以及如何避免

可能的原因;

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

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

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

  1. 前端代码问题
$p.html(content)

或者

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

content 内容又被原样输出了。解决办法就是不要自己拼 HTML,尽量使用 text 方法。如果一定要使用 HTML,就把可疑符号变成 HTML 实体。

转自知乎

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions