一、XSS

Cross-Site Scripting,为了与css区分,简称XSS.

攻击者通过目标网站注入恶意脚本,在用户浏览器中运行,以获取用户敏感信息,出现恶意行为。

XSS分类:

  1. 存储型

    攻击者将恶意代码提交到目标网站的数据库,用户打开目标网站时,服务器将恶意代码从服务器取出,拼接在HTML中,被用户浏览器执行。常见于论坛发帖,评论,聊天等带有用户保存数据的网站功能

  2. 反射型

    攻击者构造除特殊的URL,其中包含恶意代码,当用户打开带有恶意代码的URL时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。

  3. DOM型

    攻击者构造除特殊的URL,其中包含恶意代码,不经过后端,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。

来源:

  1. 用户的UGC(用户生成内容)信息
  2. 第三方链接
  3. URL参数,POST参数
  4. Referer,Cookie

防范:

  1. html转义 对<、>等字符进行转义
  2. 限制输入长度等,增加攻击难度
  3. 设置cookie HTTP-only(服务端才能设置) 等对隐私信息加密
  4. 尽量不直接将用户输入的信息拼接到html

二、CSRF

​ Cross-Site Request Forgeries 跨站点请求伪造,攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

​ 来源:

  1. 利用xss注入恶意链接,盗取安全凭证,调用接口进行恶意行为

​ 防御:

  1. 验证码;强制用户必须与应用进行交互,才能完成最终请求。此种方式能很好的遏制 csrf,但是用户体验比较差。
  2. Cookie 设置http-only(服务端才能设置) ,利用 Cookie 的 SameSite 属性。
  3. Origin、Referer check;请求来源限制,此种方法成本最低,但是并不能保证 100% 有效,因为服务器并不是什么时候都能取到 Referer,而且低版本的浏览器存在伪造 Referer 的风险。
  4. token;通过url携带,或者设置请求头,token 验证的 CSRF 防御机制是公认最合适的方案。