惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Fortinet All Blogs
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
小众软件
小众软件
有赞技术团队
有赞技术团队
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
AWS News Blog
AWS News Blog
C
Cisco Blogs
美团技术团队
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
W
WeLiveSecurity
D
DataBreaches.Net
博客园 - 司徒正美
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
Google DeepMind News
Google DeepMind News
T
The Blog of Author Tim Ferriss
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Vercel News
Vercel News
月光博客
月光博客
T
Tailwind CSS Blog
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
Microsoft Security Blog
Microsoft Security Blog
V
V2EX
WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
Recent Announcements
Recent Announcements

逸思杂陈

家用网络 vlan 单线复用 Linux 平台 intel UHD 6xx 核显 openvino 探索 UI 区域检测的 vibe coding 复盘 mitmproxy 使用 esim 使用相关 阻止 bilibili 网页自动关注 Hexo 版本更新与技术债务 配置 Linux 作为主力操作系统 在 Linux 虚拟机中使用 PyAutoGUI 做自动化 语言的力量 联想笔记本 BIOS 跳过检测强制降级 redroid “设备未获得play保护机制认证” 问题 在 iOS 上访问安卓应用 在 VSCode 中用 Rust 刷LeetCode HomeBrew 与无 root 权限 Linux 环境包管理 给 macOS 词典增加生词本功能 关闭子进程打开的文件描述符 容器内进程优雅退出 Python 循环变量泄露与延迟绑定 bash 语法备忘 MySQL 自定义数据库路径
跨域的那些事
Jay.Run 学习 思考 行动 Python · 2023-08-15 · via 逸思杂陈

跨域的那些事

发表于 更新于 分类于 编程 本文字数: 652 阅读时长 ≈ 2 分钟

  • 什么是跨域?
    • 就是当前域访问了非本域的资源。对于http来说,url代表资源,也就是访问了非本域的url。
  • 域的定义是啥?
    • 这里的域,也就是同源策略(Same-origin policy)中的源。
    • 如果两个 URL 的协议、端口和主机都相同的话,则这两个 URL 是同源的。
    • 当前域:当前网页的域;目标域:访问的资源所在的域
  • 为什么要限制跨域请求?信息泄露
    • js直接读取浏览器的目标域的sessionid、cookie,伪造请求。
      • 比如,当前站点是恶意站点,它用js请求银行站点,盗取信息。
    • CSRF,如img标签的src会被访问,利用受害者已认证的身份,在不知情的情况下向受害者认证的站点发起恶意请求。
      • 通过在src里构造url,恶意请求目标域
        1
        2
        <img src="https://bank.com/transfer?amount=1000&to=attackerAccount" 
        style="display:none;">
    • XSS跨站脚本(Cross-site scripting)注入,导致用户在信息泄露
      • 一般是接受了用户构造的输入,输入里包含恶意脚本内容,内容未被转义,又输出在页面上,从而被执行
      • 其他用户查看了该页面,注入的脚本被执行
  • 怎么限制跨域?浏览器的同源策略
    • 禁止的
      • DOM 同源策略: 不同源的dom之间不能相互操作,多个iframe的情况
      • XMLHttpRequest 同源策略: 禁止请求不同源url
      • Cookie、LocalStorage、IndexedDB 等存储性内容同源策略
    • 允许的
      • 页面中的链接,重定向以及表单提交
      • <script>、<img>、<link>这些包含 src 属性的标签可以加载跨域资源。(只能GET)
  • 限制跨域导致哪些不便?
    • 前后端分离开发时,localhost不能正常访问后端资源
    • 一些公共的api不能被访问
    • https的页面的http的静态资源,不能加载
  • 如何绕过同源策略?
    • 浏览器启动参数(在用户端操作)
    • 反向代理(在当前域操作)
    • JSONP(在目标域操作)
      • 利用<script>允许跨域的特点,设置标签的src为目标域,动态生成需要的javascript内容
    • 跨源资源共享(CORS)(目标域操作)
      • 设置相应的reponse header
        1
        2
        3
        4
        Access-Control-Allow-Origin: https://foo.example  // 所允许的来源域
        Access-Control-Allow-Methods: POST, GET, OPTIONS // 所允许的请求方法
        Access-Control-Allow-Headers: X-PINGOTHER, Content-Type // 所允许的请求header
        Access-Control-Max-Age: 86400
  • 参考