Web安全 - 深入同源策略

什么是同源?

网站的 " 源 ",是由(protocol,host,port)三元组定义的,两个网站(URL)同源是指它们的协议、主机、端口号都相同。

为什么要同源策略?

比如现在有两个网站 alimama.comaliniangniang.com 如果我的 aliniangniang.com 是嵌在 alimama.com 页面,它们的前端页面还可以对对方的服务端发送请求,这并不是我们希望看见的。

所以同源策略并不是用于保护网络服务器安全的。是为了防止他们读取用户在当前网站上的数据,或以用户的身份向当前网站发起操作。

此处有一个疑问:很多网站将图像文件、JavaScript代码等静态文件放在与主站域名不同的 CDN 域名上,为什么这些资源跨域还能正常显示或执行?

解答:

  1. 区分两个概念:1.加载资源 2.读取资源浏览器跨域加载资源是不受限制的(CSS加载字体文件是个例外)。
  2. 注意同源策略阻止的对象:一个域的 JS代码读取另一个域的数据。举例 aliniangniang.com 应用的资源可以在 alimama.com 上展示或者执行,但是无法读取到 aliniangniang.com 的资源。
  3. 由于同源策略存在,所以 alimama.com 无法拿到 aliniangniang.com 都 SessionID,无法以 aliniangniang.com 的身份发出请求拿到非法数据。

跨域DOM互访问

这项技术解决的是我们前端不同源网站的互相访问。

子域名的互相访问

我们只需要使用JS把 document.domian 改为 example.com,他们就能互相访问对方的DOM内容。

注意:

  1. 修改 document.domian 时,浏览器会做安全检查,只允许将其修改为当前域名或者父域名,否则会抛出异常。
  2. 修改 document.domian 同时会把当前源的端口设置为 " null "。
  3. 修改 document.domian 的操作相当于丢弃了同源的端口限制,导致了被攻击的风险增加。
  4. 父子网站都需要对 document.domian 进行修改。

跨域访问服务端

即前端页面要从跨域的服务端获取数据。

JSONP

如果不涉及跨域前后端通常以JSON获取数据,跨域时需要加padding,将json转为 JS 代码。目前使用 HTML5有自动支持数据传输。

相关推荐
chipsense6 小时前
充电桩安全新突破:B型漏电检测技术如何守护电动汽车充电安全?
安全·传感器·充电桩·互感器
王九思7 小时前
Java 内存分析工具 MAT
java·开发语言·安全
模型时代8 小时前
StealC恶意软件控制面板安全漏洞暴露威胁行为者操作
安全·web安全·php
2301_8101545510 小时前
CTF 编码篇 1
安全
one____dream10 小时前
【网安】pwn-ret2shellcode
python·安全·网络安全·网络攻击模型
王然-HUDDM10 小时前
技术领跑:HUDDM-7D系统L4级功能安全预研验证
人工智能·嵌入式硬件·安全·车载系统·汽车
腾讯安全应急响应中心10 小时前
当AI学会背刺:深度剖析Agent Skills的安全陷阱
人工智能·安全
黎阳之光10 小时前
打破视域孤岛,智追目标全程 —— 公安视频追踪技术革新来袭
人工智能·算法·安全·视频孪生·黎阳之光
尊治13 小时前
安全继电器的工作原理和接线
安全·汇川plc·esim电工仿真·电工仿真软件·电工仿真·电气原理图模拟仿真·安全继电器
味悲13 小时前
渗透测试学习笔记二
安全