【前端】XSS攻击

一 什么是XSS

Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。
为了和 CSS 区分,这里把攻击的第一个字母改成了 X,于是叫做 XSS。

二 XSS攻击分类

1.存储型

恶意代码被当做正常数据插入到数据库中,当用户正常访问页面的时候,恶意代码从数据库中被取出,在当前页面被触发。用户不会发现自己被攻击。这种XSS可以无差别攻击,影响很大。比如留言板的XSS,在留言板里加个alert的script,等读的时候弹死他们。

2.反射型

恶意代码被当做正常数据提交到后台后,由后台进行处理,并立刻返回到前端被触发。这种XSS的攻击方式一般是骗人点链接,恶意代码在url中,有一些安全常识的人可能会发现一些端倪。比如前几年在QQ空间留言区很火的“你这张照片好好看啊:恶意连接”。

3.DOM型

和反射型一样,单独提出来是因为它不过后端,由JS直接在前台处理。所以在后端是无法防御的,这个必须要前台过滤。比如当你在一个购物网站搜索“上衣”,返回页面中显示“上衣的搜索结果如下:”,这里的上衣可能就是直接由js获取你提交的值插入的,而不是从后端而来。

三 XSS可以干的坏事举例

  • 盗取cookie
  • 可以偷你当前页面的重要数据,偷偷回传到攻击者服务器
  • 恶意跳转,比如网页中插入一个window.location.href的脚本。
    还有很多自行脑补。。。

三 如何防止XSS攻击。

需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。不要让不可预期的脚本被在浏览器上执行,所以在前端和后端代码上都加上过滤方法。过滤掉所有不可预期的脚本。但是用户有插入混合图文的需求,有的场景可能还支持自定义样式,这决定了不能完全阻止html注入,自然也就会带来js注入,引发XSS。

猜你喜欢

转载自blog.csdn.net/cheidou123/article/details/92758136