Skip to content

Latest commit

 

History

History
72 lines (36 loc) · 3.82 KB

33.XSS攻击-为什么Cookie中有HttpOnly属性.md

File metadata and controls

72 lines (36 loc) · 3.82 KB

33 | 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?

同源策略可以隔离各个站点之间DOM交互, 页面数据和网络通信,安全和自由之间又找到了一个平衡点 ,默认页面可以引入任意第三方资源 ,然后又引入CSP策略加以限制,默认XMLHttpRequest和Fetch不能跨域请求资源,后面又加入了CORS策略来支持跨域

XSS攻击(Cross Site Scripting)

  • 跨站脚本攻击, 往HTML文件或DOM注入恶意脚本,在用户浏览页面时利用注入的恶意脚本对用户实施攻击的一种手段
  • 恶意脚本操作
    1. 获取Cookie信息,直接通过document.cookie获取Cookie信息,通过ajax或者Fetch加上CORS功能将数据发送到恶意服务器,拿到用户Cookie信息之后,在其他电脑上模拟用户登录,然后进行转账工作
    2. 监听用户行为,使用addEventListener监听用户的输入事件,获取用户输入信息,将其发送到恶意服务器(盗号,一般是恶意伪造页面)
    3. 修改DOM伪造加的登录窗口,欺骗用户输入用户名和密码等信息
    4. 页面生成浮窗广告

恶意脚本注入

储存型XSS攻击,反射型XSS攻击,基于DOM的XSS攻击

  1. 储存型

    • 利用站点漏洞将恶意JS代码提交到网站数据库中
    • 用户向网站请求包含恶意JS的页面
    • 恶意JS在用户执行,然后可以获取Cookie等数据信息
  2. 反射型

    • 恶意JS属于用户发送给网站请求的一部分,随后网站又把恶意JS返回给用户,恶意JS在用户页面被执行时,黑客可以利用该脚本做一些恶意操作
    • 恶意代码提交到Web服务器中,服务器接收到请求时,又将恶意代码反射给浏览器端,这就是XSS攻击,恶意脚本不会被储存但是会将操作反射给浏览器执行
  3. 基于DOM XSS攻击

    • 通过将恶意脚本注入页面(网络劫持页面然后修改HTML页面内容,WIFI劫持,本地恶意软件劫持等等)都是在Web资源传输的过程中或者在用户使用页面的过程中修改Web页面数据

    阻止XSS攻击

    • 永远不要相信用户输入的行为

      • 服务器对输入脚本进行过滤或者转码,一些关键字符& < > : ()等等都需要进行转义,同时也可以选择将<script>标签内的所有东西全部过滤掉
    • 充分利用CSP

      • CSP:

        1. 限制其他域下的资源文件, 即使黑客插入JS,但是JS也无法被加载

        2. 禁止向第三方域提交数据,用户数据不会被外协

        3. 禁止执行内联脚本和未授权的脚本

        4. 上报机制,帮助发现XSS攻击,以尽快修复

    • 使用HttpOnly属性

      • XSS攻击大多数是盗用Cookie的,使用HttpOnly保护Cookie安全,服务器可以将某些Cookie设置为HttpOnly标志,其是服务器通过HTTP响应头设置的,使用HttpOnly标识的Cookie只能使用在HTTP请求过程中,无法通过JS读取(document.cookie)

    summary

    • XSS攻击就是黑客往页面注入恶意脚本,将页面比较重要的数据上传到恶意服务器(Cookie为例),常见XSS攻击是存储型XSS攻击,反射型XSS攻击和基于DOM的XSS攻击
    • 攻击的特点就是往用户页面注入恶意脚本,然后通过恶意脚本将用户数据上传到恶意服务器上,有些是通过服务器漏洞注入的,有些是通过客户端(浏览器)注入的
    • 针对XSS攻击有三种防范策略,第一是服务端将用户上传过来需要存储的数据进行转义或者过滤,使上传的数据无法返回浏览器执行JS恶意代码,第二是利用CSP策略,第三就是将重要的Cookie设置成HttpOnly进行保护
    • 除了以上策略,还可以添加验证码防止脚本冒充用户提交危险操作, 一些不信任的操作还可以限制长度