安全问题

XSS(跨站点脚本攻击)漏洞

  1. 攻击原理
      攻击者向有xss漏洞的网站中传入恶意的html代码,其他用户浏览该网站时,这段html代码会自动执行,从而达到攻击的目的。

  2. XSS分类
    (1)反射型XSS:被动的非持久性XSS—恶意数据紧跟请求立即返回浏览器,当用户点击URL带攻击代码的连接(通过多网址服务将之缩短),服务器解析后响应,再返回的响应内容中隐藏和嵌入攻击者的XSS代码,被浏览器执行,从而攻击用户。
    (2)持久性(存储性)XSS:主动提交恶意数据(HTML/JS)到服务器存入数据库,攻击者在数据中嵌入代码,因此当其他用户请求后,服务器将数据返回给用户,用户浏览此页面时可能就收到了攻击。

  • 恶意用户的HTML/JS输入服务器 -> 进入数据库 -> 服务器响应查询数据库 -> 用户浏览器;
    (3)Dom-based XSS:从document.location/document.URL/document.referrer获取数据在本地执行;
  1. 防范
    (1)使用XSS filter
  • 输入过滤:对用户提交的数据进行有效性验证,阻止或忽略非期望格式的内容提交;
  • 输出转义:输出HTML属性时使用HTMLEncode进行处理,输出到<script>中,可以进行JS编码;
    (2)使用HttpOnly Cookie:浏览器向web服务器发起请求时会带上cookie字段,但是在js脚本中却不能访问cookie,避免xss攻击利用js的document.cookie获取cookie;

csrf(跨站请求伪造)攻击

  1. 攻击原理
      源于web的隐式身份验证机制(可以保证一个请求来自某个用户的浏览器,但无法保证该请求是用户批准主动发送的);
  2. 攻击条件
    (1)客户端必须先登陆目标网站A,并在本地生成cookie;
    (2)在不退出网站A的情况下,客户端访问危险网站B,危险网站B伪造网站A的url请求,让该请求从客户端的浏览器并携带网站A的cookie发出去(session并没有过期);
  3. 防范
    (1)验证Http Referer字段:Referer字段记录了该Http请求的来源地址—目标网站A只要对每一个http请求的Referer值进行验证,若不是自己允许的网站请求,则拒绝该请求;
  • 优点:给所有安全敏感的请求统一加一个拦截器检查Referer的值即可,无须改变当前系统的任何已有代码和逻辑;
  • 缺点
    • 安全性都依赖浏览器保障,若对用户浏览器的Referer值进行篡改就会有安全问题;
    • 用户关闭Referer字段,即设置浏览器在其发送请求时不再提供Referer字段;
      验证http referer字段

      (2)验证码;
      (3)随机数token验证:在请求中放入攻击者不能伪造的信息,即不存于cookie中,服务器增加一个拦截器验证这个token,若请求没有token或token内容不正确则拒绝该请求;
  • 在请求地址中添加token并验证;
  • 在http headers中自定义csrftoken字段并验证;— 通过XMLHttpRequest设置header;

csrf与xss的区别

  1. xss:HTML的问题—内容没有过滤导致浏览器将攻击者的输入当代码执行,盗取cookie干坏事;
  2. csrf:HTTP的问题—浏览器发送HTTP请求时会自动带上cookie,而一般session都存在cookie里,借cookie干坏事,实质上没有拿到受害者的cookie;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容