Web安全 - 深入同源策略

什么是同源?

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

为什么要同源策略?

比如现在有两个网站 alimama.com 和 aliniangniang.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有自动支持数据传输。

相关推荐

  1. Web安全 - 深入同源策略

    2023-12-20 16:32:03       38 阅读
  2. 同源策略

    2023-12-20 16:32:03       11 阅读
  3. 「 网络安全常用术语解读 」同源策略SOP详解

    2023-12-20 16:32:03       15 阅读
  4. Web安全权限策略记录-PPH/CSP/XFO

    2023-12-20 16:32:03       33 阅读
  5. Web前端后端结合:深度解析与实战策略

    2023-12-20 16:32:03       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-20 16:32:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-20 16:32:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-20 16:32:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-20 16:32:03       18 阅读

热门阅读

  1. 蓝底白字车牌的定位与字符分割识别 MATLAB 仿真

    2023-12-20 16:32:03       34 阅读
  2. [PTA]矩阵列平移

    2023-12-20 16:32:03       38 阅读
  3. 05-MySQL中的limit和union关键字

    2023-12-20 16:32:03       33 阅读
  4. 【libevent】IO引擎及实现

    2023-12-20 16:32:03       30 阅读
  5. springboot 解析微信小程序获取手机号

    2023-12-20 16:32:03       23 阅读
  6. 基于改进鲸鱼算法的最小乘支持向量机数据分类

    2023-12-20 16:32:03       29 阅读
  7. Python用Pygame实现一个五子棋小游戏

    2023-12-20 16:32:03       35 阅读
  8. iOS将framework转为xcframework

    2023-12-20 16:32:03       35 阅读
  9. Dubbo RPC-Redis协议

    2023-12-20 16:32:03       42 阅读
  10. Prolist组件实现动态竖排展示

    2023-12-20 16:32:03       33 阅读
  11. 在vue中,文件转base64示例

    2023-12-20 16:32:03       33 阅读
  12. WPF 全局异常处理

    2023-12-20 16:32:03       40 阅读
  13. Spring 声明式事务

    2023-12-20 16:32:03       41 阅读
  14. Hive Serde

    2023-12-20 16:32:03       40 阅读
  15. MySQL的恢复与备份

    2023-12-20 16:32:03       25 阅读