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有自动支持数据传输。

相关推荐
wanhengidc9 小时前
服务器硬盘的作用都有哪些?
运维·服务器·安全·智能手机·云计算
一生要强的ymy10 小时前
Polarctf 写shell
安全·web安全·网络安全·系统安全·安全威胁分析
字节跳动安全中心10 小时前
开源!可信MCP,AICC机密计算新升级!
安全·llm·mcp
今日说"法"11 小时前
Rust 代码审查清单:从安全到性能的关键校验
开发语言·安全·rust
金仓拾光集11 小时前
「安全升级 + 零代码平替」金仓数据库如何实现MongoDB社交动态发布系统的无缝迁移?
数据库·安全·mongodb·kingbase·kingbasees·数据库平替用金仓·金仓数据库
网络安全-海哥12 小时前
Web安全深度实战:从漏洞挖掘到安全防护
网络·web安全·网络安全·网络攻击·转行
FairGuard手游加固13 小时前
Cocos资源加密方案解析
安全·游戏·cocos2d
2501_9387918313 小时前
API 接口安全:用 JWT + Refresh Token 解决 Token 过期与身份伪造问题
安全
深盾安全13 小时前
深入 Rust 错误处理:从新手到高手的进阶之路
安全
运维有小邓@13 小时前
如何生成随机密码保护新创建的用户帐户安全?
运维·安全·自动化