某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

    • 客户端主题
    • 跨站脚本(XSS)

    • 跨站请求伪造(CSRF)

    • 跨域资源共享(CORS)

      • 跨域资源共享(CORS)
      • 同源策略(SOP)
        • 什么是同源策略?
        • 为什么需要同源策略?
        • 同源策略是如何实现的?
      • CORS和Access-Control-Allow-Origin响应标头
    • 点击劫持

    • 基于DOM的漏洞

    • WebSockets

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

  • BurpSuite及官方实验室
  • 客户端主题(翻译)
  • 跨域资源共享(CORS)
carsaid
2023-10-06
目录

同源策略(SOP)

翻译

原文:https://portswigger.net/web-security/cors/same-origin-policy

- name: 翻译
  desc: 原文:https://portswigger.net/web-security/cors/same-origin-policy
  bgColor: '#F0DFB1'
  textColor: 'green'
1
2
3
4

# 同源策略(SOP)

在本节中,我们将解释什么是同源策略(SOP)以及如何实现它。

# 1什么是同源策略?

同源策略是一种 Web 浏览器安全机制,旨在防止网站相互攻击。

同源策略对 一个源上的脚本 访问 另一个源的数据 进行了限制。源由 URI 协议、域名和端口号组成。例如,请考虑以下 URL:

http://normal-website.com/example/example.html
1

上述 URL 使用协议http、域名normal-website.com和端口号80。下表显示了,如果上述 URL 中的内容试图访问其他来源,同源策略将如何应用:

访问的目标URL 允许访问?
http://normal-website.com/example/ Yes:相同的协议、域名和端口
http://normal-website.com/example2/ Yes:相同的协议、域名和端口
https://normal-website.com/example/ No:不同的协议和端口
http://en.normal-website.com/example/ No:不同的域名
http://www.normal-website.com/example/ No:不同的域名
http://normal-website.com:8080/example/ No:不同的端口(Internet Explorer 将允许此访问,因为 IE 在应用同源策略时不考虑端口号。)

# 2为什么需要同源策略?

当浏览器从一个源 向 另一个源发送 HTTP 请求时,与另一个域相关的任何 Cookie(包括身份验证会话Cookie)也会作为请求的一部分发送。这意味着,将在用户的会话中生成响应,并在其中包含特定于用户的任何相关数据。如果没有了同源策略,那么当你访问一个恶意网站时,它将能够从 Gmail 读取你的电子邮件,从 Facebook 读取你的私人消息等。

# 3同源策略是如何实现的?

同源策略通常会控制 JavaScript 代码对跨域加载内容的访问,但其一般允许跨域加载页面资源。例如,SOP 允许通过<img>标签嵌入图像、通过<video>标签嵌入媒体,JavaScript 包含在<script>标签中。但是,虽然这些外部资源可以由页面加载,但页面上的任何 JavaScript 都无法读取这些资源的内容。

同源策略有多种例外情况:

  • 某些对象是可写的,但不能跨域读取,例如location对象、iframe 标签中的location.href属性、新窗口。
  • 某些对象是可读的,但不能跨域写入,例如window对象的length属性(存储当前页面的帧数)和closed属性。
  • replace函数通常可以在location对象上调用跨域。
  • 你可以跨域调用某些函数。例如,你可以在新窗口上调用函数close、blur和focus。postMessage函数也可以在 iframe 和新窗口上调用,以便将消息从一个域 发送到 另一个域。

由于旧版本的要求,同源策略在处理 Cookie 时更加宽松,因此,即使每个子域在技术上都是处于不同的来源,也可以从网站的所有子域访问这些 Cookie。你可以使用HttpOnly cookie 标志来缓解部分此种风险。

你可以使用document.domain来放宽同源策略。这个特殊的属性允许你放宽特定域的 SOP,但前提是当它为 FQDN(完全限定域名)的一部分时。例如,你可能有一个域marketing.example.com,并且你希望在example.com上读取该域的内容。为此,两个域都需要将document.domain设置为example.com。然后,SOP 将允许两个域之间的访问,尽管它们的来源不同。在过去,可以将document.domain设置为诸如com之类的 TLD,这允许在同一 TLD 上的任何域之间进行访问,但是现代浏览器阻止了这种情况。

编辑 (opens new window)
跨域资源共享(CORS)
CORS和Access-Control-Allow-Origin响应标头

← 跨域资源共享(CORS) CORS和Access-Control-Allow-Origin响应标头→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式