XSS && CSRF

121 阅读2分钟

XSS(Cross site scripting 跨站脚本攻击)

一般是指恶意插入网页脚本,企图获取用户信息,或者攻击网页等目的的一种攻击手段

可以有以下几种形式:

  1. 非持久型 主要是攻击者制作好攻击连接,欺骗用户点击触发,因为连接不是存在于数据库或服务器中,通常只对特定人群有效
  2. 持久性 攻击者通过post请求,提交恶意攻击脚本或者代码到服务器,篡改了数据或者隐形于页面中,使得其他用户可能在访问该页面的时候都有可能受到攻击,或是获取到用户的cookie或是其他的恶意行为
  3. DOM型 通过插入脚本,该脚本有篡改dom的能力,或者通过js代码能够伪造窃取,改变,dom能力欺骗用户

通常而言,我们防御跨站脚本一般是通过过滤用户输入,过滤敏感词汇,转义用户输入,达到较为安全的环境,并且还有其他的 cookie =》 httponly(禁止js获取cookie 自己也会被禁止掉) 校验refferer 校验网页来源


CSRF (Cross site request forgrey)跨站请求伪造

攻击者利用网络请求漏洞,通过构建网站的请求地址,诱导用户自动加载请求,完成自己的目的(get 可以加载图片脚本或其他资源,post 可以form表单自动提交) 通常的手段是在自己的页面加上隐藏的iframe 里面有自己的一个页面,页面里面有第三方的提交表单,(form post 可以跨域提交)这样如果不校验或者验证手段只有cookie 那么第三方页面就很容易受到攻击

我们使用防御的手段一般有:

  1. cookie httponly
  2. 所有涉及修改数据库的提交接口用 post 不用get
  3. 加上refferer 校验来源
  4. Anti-csrf-token: 服务端生成一个token 保存session,同时给到客户端,客户端提交时带上token,服务端验证后修改token 避免重复提交

参考:

安全|常见的Web攻击手段之CSRF攻击 - 简书

CSRF攻击与防御(写得非常好)_xiaoxinshuaiga的博客-CSDN博客_csrf