LearningRecord icon indicating copy to clipboard operation
LearningRecord copied to clipboard

XSS是什么,攻击原理,怎么预防

Open Rashomon511 opened this issue 5 years ago • 0 comments

XSS是什么

XSS是一种跨站脚本攻击,是属于代码注入的一种,攻击者通过将代码注入网页中,其他用户看到会受到影响(代码内容有请求外部服务器);

xss攻击分类:

  • 反射型:攻击者构造一个带有恶意代码的url链接诱导正常用户点击,服务器接收到这个url对应的请求读取出其中的参数然后没有做过滤就拼接到Html页面发送给浏览器,浏览器解析执行
  • 存储型: 攻击者将带有恶意代码的内容发送给服务器(比如在论坛上发帖),服务器没有做过滤就将内容存储到数据库中,下次再请求这个页面的时候服务器从数据库中读取出相关的内容拼接到html上,浏览器收到之后解析执行
  • dom型:dom型xss主要和前端js有关,是前端js获取到用户的输入没有进行过滤然后拼接到html中

扩展

CSRF是一种跨站请求伪造,冒充用户发起请求,完成一些违背用户请求的行为(删帖,改密码,发邮件,发帖等)

防御方法举例:

  • 使用encodeURIComponent对url中的参数进行编码(反射型xss),对一些关键字和特殊字符进行过滤(<>,?,script等),或对用户输入内容进行URL编码(encodeURIComponent);
  • Cookie不要存放用户名和密码,对cookie信息进行MD5等算法散列存放,必要时可以将IP和cookie绑定;
  • 对用户的输入进行过滤(适用于所有类型的xss攻击)
  • 对用户的输入使用innerText或者textContent进行设置,而不是使用innerHTML或者outerHTML进行设置
  • 服务器端设置cookie为httpOnly让前端无法通过js获取到用户的cookie
  • 关键请求使用验证码,比如转账请求,避免恶意脚本发送这些关键请求

Rashomon511 avatar Apr 16 '19 14:04 Rashomon511