zoukankan      html  css  js  c++  java
  • 前端攻击(XSS和CSRF)

    1.CSRF的基本概念、缩写、全称

      CSRF(Cross-site request forgery):跨站请求伪造

    用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cookie

    从上图可以看出,要完成一次CSRF攻击,受害者必须满足两个必要的条件:

      1.登录受信任网站A,并在本地生成cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录)

      2.在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)

    举个例子:前段时间里,微博网站有个api接口有漏洞,导致很多用户的粉丝暴增。

    CSRF的防范措施:

     方法一:token验证(用的最多)

      1.服务器发送给客户端一个token

      2.客户端提交的表单中带着这个token

      3.如果这个token不合法,那么服务器拒绝这个请求

     方法二:隐藏令牌

      把token隐藏在http的head中(方法二和方法一有点像,本质上没有太大区别,只是使用方式上有区别)

     方法三:Referer验证

      Referer指的是页面请求资源。意思是,只接受本站的请求,服务器才做响应,如果不是,就拦截

    2.XSS的攻击原理

      XSS攻击的核心原理是:不需要你做任何的登录验证,它会通过合法的操作(比如在url中输入,在评论框中输入),向你的页面注入脚本(可能是js、html代码块)

    最后导致的结果是:

      1.盗用cookie

      2.破坏页面的正常结构,插入广告等恶意内容

      3.D-doss攻击

    XSS的防范措施:

      1.编码

        对用户输入的数据进行HTML Entity编码

        比如说这段代码:

    <script>alert(1)</script>

        若不进行任何处理,则浏览器会执行alert的js操作,实现XSS注入

      2.过滤

        移除用户输入和事件相关的属性。如onerror可以自动触发攻击,还有onclick

        移除用户输入的style节点,script节点、iframe节点(尤其是script节点,它是可以支持跨域的,一定要移除)

      3.校正

        避免直接对HTML Entity进行编码

        使用Dom parse 转换,校正不配对的DOM标签

    3.CSRF和XSS的区别

      区别一:

        CSRF:需要用户先登录网站A,获取cookie

        XSS:不需要登录

      区别二:

        CSRF:是利用网站A本身的漏洞,去请求网站A的api

        XSS:是向网站A注入js代码,然后执行JS里的代码,篡改网站A的内容

  • 相关阅读:
    551. 学生出勤纪录 I
    387. 字符串中的第一个唯一字符
    剑指OFFER 字符串的排列
    剑指OFFER 斐波那契数列
    剑指OFFER 重建二叉树
    剑指OFFER 二维数组中的查找
    剑指OFFER 和为S的两个数字
    剑指OFFER 左旋转字符串
    剑指OFFER 合并两个排序的链表
    剑指OFFER 从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/qiaowanze/p/12730469.html
Copyright © 2011-2022 走看看