zoukankan      html  css  js  c++  java
  • Web网络安全

    一. 浏览器系统安全方面,使用多进程方案,而js主线程运行在渲染进程中,渲染进程时运行在沙箱中的,没有对本地OS文件的直接读写权限,所以需要通过IPC与浏览器主线程通信,才可以后去cookie等信息,这样就限制了恶意JS对本地OS系统的置入病毒或者恶意程序。

    二. 网络安全方面Https 实现安全加密通信,避免明文数据被窃取。

    三. Web页面级别安全,是我们关注的重点。

    1. 使用同源策略(协议,域名,端口都必须相同),才可以允许资源共享,彼此操作DOM, cookie, indexDB, LocalStorage, SessionStorage等

    • 比如可以通过获取上一个页面的opener来执行DOM操作: opener.document.body.style.display = "none"
    • IndexDB是浏览器提供给的一个非关系性数据库,支持事务,支持二进制存储,大小可达250M,它是异步读写的,与LocalStorage同步读写方式不同。
    • 在安全与便利性的平衡下,引入CSP(内容安全策略),让Server来决定Browse能加载哪些资源,让Server来决定能否执行内联的JS代码等,减少XSS攻击。
    • CSP是一个http响应头字段,告诉浏览器可以从哪里获取资源,是否可以执行某些JS代码等,但这个字段的兼容性不太好,IE不支持,Edge支持。

    2. XSS (Cross-Site-Script), 本该缩写为css,可与层叠样式表冲突,故此缩写为XSS。

    它的含义是,插入一段JS,用户浏览页面时,它会自动执行实行攻击。由于这段恶意JS拥有正常JS脚本的所有权限,比如读Cookie,监听用户输入的信息(如信用卡账号密码),修改DOM,生成浮动窗广告 等等。所以需要识别和避免。

    它有3种类别的XSS

    存储型XSS,输入框没有任务过滤,没有经过任何编码/转换直接存到DB中,读取内容是,直接展示出来,就会导致js自动执行。

    反射性XSS,通过URL插入<script>标签,server端没有处理到,直接返给Browse

    DOM中的XSS,连接一些恶意的WiFI路由器,信息被截获修改,注入恶意JS,返回修改后的内容给浏览器。

    如何防止

    任何UI输入域,必须转码编译,URL编码,过滤掉特殊的<script>标签等

    严格的CSP策略,比如禁止第三方提交数据,禁止执行内联脚本和未授权的脚本,提供上报机制;或者限制加载其他域的资源文件。

    Http only,JS不能直接读取这个Cookie,重要的数据需要设置一下,只允许http请求带上。

    3. CSRF攻击

    它主要是利用用户登录信息,如Cookie信息,通过黑客网站做一些恶意攻击。

    case, 用户登录一个正规的银行网站,登录信息一般会保存在cookie中,此时没有退出,则cookie还在有效期内。此时用户访问一个恶意网站,这个网站可自动向银行网站发送请求,比如隐藏域post,image点击,浏览器在向银行网站发送请求时会带上它还没有过期的cookie信息,这样银行站点就区分不出这个请求时从哪里发过来的,就会认为这个请求时合法的,就可以做转账等操作。

    如何防止

    由于这是由于server端的漏洞+cookie未过期+user打开了黑客的site,3个条件同时满足才会触发的攻击行为,so我们从以下几个方面来防止。

    a. SameSite, cookie中的SameSite可以禁止第三方站点发送请求时携带本站点的cookie

    它有几个值,

    Strict,完全禁止;

    Lax, 宽松点,它要求从第三方站点打开且是Get请求时,可以携带这个Cookie,但Post方法,image加载,iframe加载的URL 都不能带。这个也是chrome浏览器(2020年发布的80)后版本的默认值,加强安全策略。

    none,没有限制。

    因此,网站开发者可以对一些关键cookie设置为strict,lax来加强防控。

    b. server端验证Origin/Referer,通过判断请求方来做控制

    注意,现在主要是使用Origin,优先级高,Referer,且他们的区别是,Origin不含Path部分,且不会像Referer一样存在兼容性问题,Referer还可能被用户禁用和篡改。

    c. CSRF Token

    Server返回一个CSRF Token放到隐藏域中,每次发请求时会带上,在server端对token进行验证。

  • 相关阅读:
    Google Map API基本概念(转载)很好的例子
    Sql Exception Handling & Throw Exception
    幸福人生讲座(十):五伦中哪一伦最重要?
    Delete Database Log
    杨澜语录
    余世雄 如何提升职场“执行力”
    红楼女梦
    假如我真的看透了
    余世维 有效沟通
    习惯修养
  • 原文地址:https://www.cnblogs.com/roy1/p/13722603.html
Copyright © 2011-2022 走看看