• web安全


    同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能。
    同源是指host、子域名、端口、协议。
    在浏览器中,一些标签(<script>、<img>、<iframe>、<link>等)是可以跨域加载资源的而不受同源策略影响的。
    对于浏览器来说,除了dom、cookie、xhr会受到同源策略限制外,浏览器加载的一些第三方插件也有各自的同源策略。比方说,flash它主要通过目标网站提供的crossdomain.xml文件(策略文件)判断是否允许当前“源”的flash跨域访问目标资源。
    浏览器通过多进程架构和sandbox的保护,提高安全性。浏览器还会周期性地从服务端获取一份最新的恶意网址黑名单,实现对恶意网址的拦截。

    XSS(跨站脚本攻击):通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
    反射型XSS:恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。
    存储型XSS:恶意代码会被存储在服务器端。
    常见的XSS payload(恶意脚本),通过读取浏览器Cookie对象,从而发起“cookie挟持”攻击。
    XSS攻击利用的技巧:利用字符编码,绕过长度限制(location.hash本身没有长度限制,但是浏览器的地址栏是有长度限制的,要是地址栏的长度也不够用,还可以再使用加载远程JS的方法,来写更多的代码),使用<base>标签,window.name(很多时候window对象不受同源策略限制)等。
    XSS防御:
    Cookie的“HttpOnly”标识可以防止“Cookie劫持”。
    验证码、修改密码前输入旧密码这样的功能都能有效的防止XSS payload。但这并不能限制住XSS攻击。
    输入(输出)检查(客户端和服务端都检查)。

    csrf(跨站点请求伪造)
    浏览器所持有的cookie分两种,session cookie和Third-party cookie(本地cookie,保存在本地)。在浏览器进程的生命周期内,tab页内session cookie都有效。利用这点,可以跨站点伪造一些请求,带上这个session cookie,以实现某种目的。

    csrf能成功伪造一个请求,主要是能预测url的所有参数和参数值。

    预防csrf:参数加密(某些url无法被用户收藏了,给数据分析工作带来困扰),新增参数token等

    ClickJacking(点击挟持)
    一种视觉上的欺骗手段。通过透明不可见的iframe,诱使用户恰好点击在iframe页面的一些功能性按钮上。

    有关安全的http响应头
    X-Frame-Options:deny(拒绝当前页面加载iframe),SAMEORIGIN(frame页面的地址只能为同域名下的页面),ALLOW-FROM(定义可以允许frame加载的页面地址)。

    Content-Security-Policy:可以在响应头设置,也可以在meta设置。具体设置查阅MDN。

    X-XSS-Protection:当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。
    除非显式修改,否则浏览器默认为1:启用XSS过滤。如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全部分)

    CORS:跨域资源共享。
    出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。但如果响应报文包含正确的cors响应头,可以访问跨域资源。
    对于“非简单请求”,浏览器先使用options方法发起预检请求,从而获取服务端是否允许该跨域请求。服务端确认后才发起实际的http请求。

     参考:

  • 相关阅读:
    iOS 键盘自适应(IQKeyboardManager)使用小结
    GitHub error “Failed to get HEAD”
    Java 8 VM GC Tuning Guide Charter2
    Java 8 VM GC Tuning Guide Charter3-4
    java中加密解密工具类
    effactive java读书小结1
    RESTful风格的SSM框架搭建
    关于“Could not open ServletContext resource [/WEB-INF/applicationContext.xml]”解决方案
    HttpPutFormContentFilter 和 ContextLoaderListener 讲解
    mybatis-spring 项目简介
  • 原文地址:https://www.cnblogs.com/Dida-1209/p/10664332.html
Copyright © 2020-2023  润新知