一文了解什么是同源策略

news2024/12/29 10:20:07

同源策略是一种重要的安全机制,它限制一个源加载的文档或脚本如何与另一个源的资源进行交互。下文小文智能就为您详细解答什么是同源策略。

一、目的

它有助于隔离潜在的恶意文档,减少可能的攻击媒介。例如,它可以防止互联网上的恶意网站在浏览器中运行 JS,以从第三方 Web 邮件服务(用户已登录)或公司内部网(通过以下方式防止攻击者直接访问)读取数据:没有公共 IP 地址)并将该数据转发给攻击者。

二、定义

如果两个 URL 的协议、端口(如果指定)和主机相同,则两个 URL 具有相同的来源。您可能会看到它被引用为“方案/主机/端口元组”,或者只是“元组”。(“元组”是一组共同构成一个整体的项目——双/三/四/五元/等的通用形式。)

下表给出了与 URL 的来源比较的示例http://store.company.com/dir/page.html:

三、跨域网络访问

同源策略控制两个不同源之间的交互,例如当您使用XMLHttpRequest或<img>元素时。这些交互通常分为三类:

通常允许跨源写入。例如链接、重定向和表单提交。某些 HTTP 请求需要预检。

通常允许跨源嵌入。(下面列出了示例。)

通常不允许跨源读取,但读取访问权限通常会因嵌入而泄漏。例如,您可以读取嵌入图像的尺寸、嵌入脚本的操作或嵌入资源的可用性。

以下是一些可能嵌入跨源资源的示例:

JavaScript 与<script src=”…”></script>. 语法错误的错误详细信息仅适用于同源脚本。

CSS 应用与<link rel=”stylesheet” href=”…”>. 由于 CSS 的语法规则比较宽松,跨源 CSS 需要正确的Content-Typeheader。如果是 MIME 类型不正确且资源不以有效 CSS 构造开头的跨源加载,浏览器会阻止样式表加载。

显示的图像<img>。

<video>和播放的媒体<audio>。

<object>嵌入了和的外部资源<embed>。

应用的字体与@font-face. 有些浏览器允许跨源字体,其他浏览器则需要同源字体。

嵌入的任何内容<iframe>。站点可以使用X-Frame-Options标头来防止跨源框架。

四、如何允许跨域访问

使用CORS允许跨域访问。CORS 是HTTP的一部分,它允许服务器指定浏览器应允许加载内容的任何其他主机。

五、如何阻止跨域访问

为了防止跨源写入,请检查请求中不可猜测的令牌 – 称为跨站点请求伪造 (CSRF)令牌。您必须防止跨源读取需要此令牌的页面。

为了防止资源的跨源读取,请确保该资源不可嵌入。通常有必要防止嵌入,因为嵌入资源总是会泄漏一些有关它的信息。

为了防止跨域嵌入,请确保您的资源不能被解释为上面列出的可嵌入格式之一。浏览器可能不尊重Content-Type标头。例如,如果您将<script>标签指向 HTML 文档,浏览器将尝试将 HTML 解析为 JavaScript。当您的资源不是站点的入口点时,您还可以使用 CSRF 令牌来防止嵌入。

六、跨域数据存储访问

对存储在浏览器中的数据(例如Web Storage和IndexedDB)的访问按来源分开。每个源都有自己单独的存储,一个源中的 JavaScript 无法读取或写入属于另一源的存储。

Cookie使用单独的来源定义。页面可以为其自己的域或任何父域设置 cookie,只要父域不是公共后缀即可。Firefox 和 Chrome 使用公共后缀列表来确定域是否为公共后缀。当您设置 cookie 时,您可以使用Domain、Path、Secure和HttpOnly标志来限制其可用性。当您读取 cookie 时,您无法看到它的设置位置。即使您仅使用安全的 https 连接,您看到的任何 cookie 也可能是使用不安全的连接设置的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/953903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 手写实现类似lower_bound和upper_bound的二分功能

目录 lower_bound和upper_bound介绍手动实现类似的二分效果lower_boundupper_bound另一种常见的二分形式 对lower_bound函数使用lamda函数 lower_bound和upper_bound介绍 lower_bound函数的作用是查找范围内第一个大于等于目标元素的元素迭代器/指针 数组的简单使用&#xff…

11、监测数据采集物联网应用开发步骤(8.2)

监测数据采集物联网应用开发步骤(8.1) 新建TCP/IP Client线程类com.zxy.tcp.ClientThread.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 import datetime import socket import threading import timefrom com.zxy.adminlog.Us…

ATA-1222A宽带放大器的电子实验案例(案例合集)

ATA-1222A宽带放大器是安泰电子打造的高带宽功放产品&#xff0c;其采用ClassAB的工作模式&#xff0c;带宽高达22MHz&#xff0c;饱和输出功率40W&#xff0c;能兼容全球不同地区的电源标准要求。凭借其优异的指标参数受到不少电子工程师的喜欢&#xff0c;其在电子实验中的应…

远程访问Linux的DataEase数据可视化分析,有哪些推荐的工具?

DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。 在本地搭建后,借助cpolar 内…

Densenet模型详解

模型介绍 DenseNet的主要思想是密集连接&#xff0c;它在卷积神经网络&#xff08;CNN&#xff09;中引入了密集块&#xff08;Dense Block&#xff09;&#xff0c;在这些块中&#xff0c;每个层都与前面所有层直接连接。这种设计可以让信息更快速地传播&#xff0c;有助于解…

数据可视化工具中的显眼包:奥威BI自带方案上阵

根据经验来看&#xff0c;BI数据可视化分析项目是由BI数据可视化工具和数据分析方案两大部分共同组成&#xff0c;且大多数时候方案都需从零开始&#xff0c;反复调整&#xff0c;会耗费大量时间精力成本。而奥威BI数据可视化工具别具匠心&#xff0c;将17年经验凝聚成标准化、…

(AcWing) spfa求最短路

给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c; 边权可能为负数。 请你求出 1 号点到 n 号点的最短距离&#xff0c;如果无法从 1 号点走到 n 号点&#xff0c;则输出 impossible。 数据保证不存在负权回路。 输入格式 第一行包含整数 n 和…

indexDb使用

indexDb是什么&#xff1f; indexDb是除了cookie&#xff0c;localstorage&#xff0c;sessionstroage外的另一种前端存贮方式。 现有前端存贮比较 indexDb特点 无大小限制&#xff0c;适用于前端存贮数据较多场景存贮结构以对象仓库形式&#xff0c;可以存入任何类型数据&a…

企业智能知识管理在线工具语雀、helplook、石墨文档、Baklib怎么样?

语雀、helplook、石墨文档和Baklib都是企业智能知识管理的在线工具&#xff0c;它们都提供了一系列功能来帮助企业管理和共享知识。下面我将对这些工具进行详细的介绍和评价。 语雀&#xff1a; 语雀是一款功能强大的在线知识管理工具&#xff0c;它提供了丰富的功能和优秀的…

Java对接海康威视(二次开发)组织信息、人员信息等

一.获取合作方数据 1.在【综合安防平台】的【关于】中前往【运行管理中心】 2.输入账户和密码进入【运行管理中心】 3.点击【状态监控】,搜索【能力开放网关】&#xff0c;点击【API管理】&#xff0c;查询可以对接的接口&#xff0c;点击对应的接口名称可以查看请求参数和返回…

抽象又有点垃圾的JavaScript

常数的排序 let x 10;let y 20;let z;if (x < y) {z x;x y;y z;}console.log(x, y);//x 20 ,y 10 通过一个媒介来继承x的初始值&#xff0c;然后将y的值赋值给x&#xff0c;再把媒介z的值赋值给y&#xff0c;达到排序 一个可重复使用的排序程序 第一种 function s…

微力同步私人网盘部署教程:利用端口映射实现远程访问的解决方案

文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸&#xff0c;虽然谈不上多么新颖&#xff0c;但是其…

ReID网络:MGN网络(4) - Loss计算

1. MGN Loss MGN采用三元损失(Triplet Loss)。 三元损失主要用于ReID算法&#xff0c;目的是帮助网络学习到一个好的Embedding信息。之所以称之为三元损失&#xff0c;主要原因在于在训练中&#xff0c;参与计算Loss的分别有Anchor、Positive和Negative三方。 2. Triplet Lo…

实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

Vue2里监听localstorage里值的变化

有的时候,我们需要根据本地缓存在localstorage里值的变化做出相应的操作,这就需要我们监听localstorage: 首先,我们在src下的libs文件夹下新建一个stroage.js用于重写setItem事件,当使用setItem的时候,触发,window.dispatchEvent派发事件 const Stroage = {// 重写set…

8.Redis-set

Set 常用命令saddsmemberssismemberscardspopsmovesrem集合间操作sinter 交集sinterstoresunion 并集sunionstoresdiff 差集sdiffstore 命令总结 内部编码应用场景使用 set来保存用户的“标签” set(集合)就是把一些有关联的数据放刀一起。 它与list的区别如下&#xff1a; 集合…

DP4863 国产双声道音频功率放大器芯片

产品概述&#xff1a; DP4863 电路是一种双声道桥接音频功率放大器。在 5 V 电源电压下&#xff0c;它能向 4 Ω 负载提供 2.2 W 的输出功率&#xff0c;或向 3 Ω 负载提供 2.5 W的输出功率&#xff0c;THD N 小于 1 %。此外&#xff0c;它还具有耳机输入端&#xff0c;可驱…

应用程序管理工具

应用程序管理是 DevOps 的重要组成部分。它可以定义为在所有阶段监控和管理软件应用程序的可用性、运行状况、性能和功能的过程&#xff0c;包括规划、设计、构建、测试、部署、维护和更新。这意味着应用程序从概念到停止都受到监控。 应用程序管理的重要性 管理应用程序可确…

关于一个git的更新使用流程

1.第一步使用git bash 使用git bash命令来进行操作&#xff08;当然我是个人比较喜欢用这种方法的&#xff09; 2. 第二步&#xff1a;连接 3.第三步&#xff1a;进入 4.第四步&#xff1a;查看分支 5.第五步&#xff1a;切换分支 将本地文件更新后之后进行提交 6.第六步&am…

山西电力市场日前价格预测【2023-09-01】

日前价格预测 预测明日&#xff08;2023-09-01&#xff09;山西电力市场全天平均日前电价为305.25元/MWh。其中&#xff0c;最高日前电价为349.30元/MWh&#xff0c;预计出现在19: 30。最低日前电价为240.52元/MWh&#xff0c;预计出现在12: 45。 价差方向预测 1&#xff1a; 实…