zoukankan      html  css  js  c++  java
  • 同源策略:为什么XMLHttpRequest不能跨域请求资源?

    浏览器安全:
    • Web页面安全
    • 浏览器网络安全
    • 浏览器系统安全

    在没有安全保障的Web世界中,我们是没有隐私的。因此需要安全策略来保障我们的隐私和数据的安全。

    最基础、最核心的安全策略:同源策略

    什么是同源策略?其主要表现在哪些方面?

    如果两个 URL 的协议、域名和端口都相同,我们就称这两个 URL 同源。主要表现在:

    • DOM: 同源策略限制了来自不同源的JavaScript脚本对当前DOM对象读和写的操作。
    • Web数据: 同源策略限制了不同源的站点读取当前站点的Cookie、IndexDB、LocalStorage等数据。
    • 网络: 同源策略限制了通过XMLHttpRequest等方式将站点的数据发送给不同源的站点。
    安全和便利性的权衡

    同源策略会隔离不同源的DOM、页面数据和网络通信,实现Web页面的完全安全。但要绝对的安全就要牺牲掉便利性,这也会使得 Web 项目难以开发和使用,为了找到中间的平衡点,就得出让一些安全性来满足灵活性,也就是目前的页面安全策略原型。

    • 页面可以引入第三方资源,不过这也暴露了很多诸如 XSS 的安全问题(比如通过各种途径往 HTML 文件中插入恶意脚本;将 Cookie、IndexDB、LoacalStorage 等敏感数据通过 XSS 的手段发送给服务器),因此又在这种开放的基础之上引入了 CSP(内容安全策略) 来限制其自由程度。
    • 使用 XMLHttpRequest 和 Fetch 都是无法直接进行跨域请求的,因此浏览器又在这种严格策略的基础之上引入了跨域资源共享策略(CORS),让其可以安全地进行跨域操作。
    • 两个不同源的 DOM 是不能相互操纵的,因此,浏览器中又实现了跨文档消息机制(window.postMessage 的 JavaScript 接口),让其可以比较安全地通信。
    内容安全策略(CSP)的核心是什么?

    CSP 的核心思想是让服务器决定浏览器能够加载哪些资源,让服务器决定浏览器是否能够执行内联 JavaScript 代码

    总结:

    如果页面中没有安全策略进行保障,那么Web世界中将无任何隐私和数据安全可言,因此有了同源策略。

    【同源策略】是Web在DOM、Web 数据和网络三个层面上提供的安全策略,保证我们在Web使用中的隐私和数据安全。

    但过于严格的安全策略,将导致Web项目难以开发和维护,所以我们必须出让一部分安全性来达到安全和灵活的平衡。

    Web在出让安全性方面主要是允许嵌入第三方资源、跨域资源共享。为解决允许嵌入第三方资源的风险,最典型的就是XSS攻击,浏览器引入了内容安全策略,由服务器来决定浏览器能够加载哪些资源。为解决跨域资源共享,浏览器又引入了跨域资源共享策略。

  • 相关阅读:
    苹果审核被拒,Guideline 1.1.6
    Java基础:类与继承
    Java中的static关键字解析
    Entity Framework 预备知识
    Entity Framework Code First执行SQL语句、视图及存储过程
    java多线程技能
    流与文件
    多线程
    集合
    断言
  • 原文地址:https://www.cnblogs.com/zppsakura/p/14188572.html
Copyright © 2011-2022 走看看