美文网首页
xss攻击和csrf/xsrf攻击

xss攻击和csrf/xsrf攻击

作者: 广告位招租 | 来源:发表于2019-03-12 17:11 被阅读0次

    xss攻击

    XSS(Cross Site Scripting), 跨站脚本攻击,是发生在目标用户的浏览器层面上,当渲染DOM树时发生了不在预期范围内的js代码执行时,可以被判定为发生了xss攻击

    xss攻击的类别

    1. 反射型xss

    非持久型XSS,是指发生请求时,XSS代码出现在请求URL中,作为参数提交到服务器,服务器解析并响应。响应结果中包含XSS代码,最后浏览器解析并执行。
    简单的案例是,某网站有一个input框,输入内容后,将会在内面上呈现输入的内容,如果这里不对返回的数据进行解码和过滤等操作的话,如果我们在input中输入一段具有攻击性的代码片段

    <img src="null" onerror='alert(document.cookie)' />
    

    页面将会弹出当前本地部分的cookie信息

    类似案例这样的,被称作反射型xss攻击

    1. 存储型 XSS

    存储型XSS,也叫持久型XSS,主要是将XSS代码发送到服务器(不管是数据库、内存还是文件系统等。),然后在下次请求页面的时候就不用带上XSS代码了。
    这里典型的案例就是留言板,用户提交了一条包含xss代码的留言到数据库,当目标用户查询留言时,留言的内容就会从服务器解析之后加载,浏览器将xss代码做html和js进行解析,发生了xss攻击

    1. DOM XSS

    DOM XSS攻击不同于反射型XSS和存储型XSS,DOM XSS代码不需要服务器端的解析响应的直接参与,而是通过浏览器端的DOM解析。这完全是客户端的事情。
    DOM XSS代码的攻击发生的可能在于我们编写JS代码造成的。我们知道eval语句有一个作用是将一段字符串转换为真正的JS语句,因此在JS中使用eval是很危险的事情,容易造成XSS攻击。避免使用eval语句。

    test.addEventListener('click', function () {
      var node = window.eval(txt.value)
      window.alert(node)
    }, false)
    
    // txt中的代码如下
    <img src='null' onerror='alert(123)' />
    

    xss的防御

    1. 对用户输入的内容进行解析和过滤或编码

    过滤有危险DOM节点,如script,img, link, style, iframe等等

    1. 对cookie做保护,设置httpOnly,防止客户端通过document.cookie读取cookie

    csrf/xsrf攻击

    CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。攻击者将会盗用你的身份,以你的名义发送恶意请求

    产生csrf攻击需要有两个步骤

    1. 登陆受信网站A,并且在本地生产对应的cookie
    2. 在不登出A的情况下,访问危险网站B

    csrf攻击是源于web的隐式身份验证机制,web的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的

    csrf攻击的防御

    1. 尽量少使用get请求
    2. 使用验证码
    3. Referer Check
    4. 使用token

    相关文章

      网友评论

          本文标题:xss攻击和csrf/xsrf攻击

          本文链接:https://www.haomeiwen.com/subject/cnqnpqtx.html