【web安全】同源策略与跨域

news/2025/2/13 20:30:13/

引言

同源策略与跨域是web安全中非常基础的知识点,并且,有的web漏洞是和同源策略息息相关的,因此我们在这里用问答的方式介绍并理解一下同源策略与跨域的相关知识。

同源策略与跨域相关问题。

  • 什么是同源,什么是跨域?
    同源与跨域是相对的,如果一个请求url的协议,域名,端口与任意一个当前页面url相同则为同源,不同则为跨域。

  • 如何理解同源策略?
  1. 同源策略是在浏览器客户端中实现的一种约定,与协议无关。
  2. 我们使用BP工具做测试渗透的时候,是没有同源限制的,只要网络可达, 协议支持,就可以任意请求相关资源。 但如果我们使用了谷歌浏览器,那么浏览器客户端就会自动判断当前页面的url与请求的资源是否是同源,若不是,默认会请求失败。
  3. 作为一种约定,同源策略是浏览器最核心与最基本的安全功能。当然,若能力支持,开发者大可自行实现一个没有同源策略的浏览器;不过,这样的浏览器怕是没有人会去用哈。

  • 同源策略在安全方面有哪些作用?
    同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。设想这样一种情况:A网站是一家银行,用户登录以后,又去浏览其他网站。如果其他网站可以读取A网站的 Cookie, 那么后果将不堪设想。
    有了同源策略的限制,如果我们进行了非同源的跨站访问, 会实现如下效果:
  1. Cookie、LocalStorage 和 IndexDB 无法读取。
  2. DOM无法获得
  3. AJAX请求不能发送
    这种情况下就可以很大程度上确保客户端安全。

  • 如何解决跨域问题?
    有时,我们实现的网站中确实有跨域的需求怎么办呢?
  1. jsonp: 主要是利用script标签的src属性不受同源策略的影响,然后通过前端与后端配合的方式实现。

  2. CORS:在后端设置Access-Control-Allow-Origin,给域名配置白名单,那么在白名单内的域名就可以跨域访问了。


  • 同源策略与CSRF漏洞有啥关系?
    我们知道,同源策略可以限制禁止读取非同源的cookie。 但是同源策略对某些标签没有限制(如 script, img, link css, iframe等), 所以像在img标签中的src地址发起请求时,会直接将用户的cookie传递过去,从而盗取用户身份进行非法操作,这就是CSRF漏洞。

  • 如何防护csrf漏洞
  1. 验证 HTTP 头部 Referer 信息, 但是Referer可以伪造,因此防护不彻底。
  2. 在请求地址中添加一个随机产生的token并验证。 这需要客户端与服务端代码同时配合才可以实现。攻击者使用CSRF攻击, 是无法获取到这个token值的,也就无法利用成功。

总结

同源策略是非常基础与重要的知识点,与web安全防护,以及前后端开发都有着重要的联系。

参考资料:
https://blog.csdn.net/mijichui2153/article/details/121456386

https://blog.51cto.com/u_2839840/2382096


http://www.ppmy.cn/news/19925.html

相关文章

AcWing蓝桥杯AB组辅导课08、数论

文章目录前言一、数论例题例题1:AcWing 1246. 等差数列(最大公约数,第十届蓝桥杯省赛CB第7题)分析题解:最大公约数例题2:AcWing 1295. X的因子链(算数基本定理、欧拉筛选,多重集合排…

蓝桥杯重点(C/C++)(随时更新,更新时间:2023.1.27)

点关注不迷路,欢迎推荐给更多人 目录 1 技巧 1.1 取消同步(节约时间,甚至能多骗点分,最好每个程序都写上) 1.2 万能库(可能会耽误编译时间,但是省脑子) 1.3 蓝桥杯return 0…

网络— — 二层交换机

网络— — 二层交换机 1 交换机端口 g0/3 g:1000M/s0:模块号3:接口号 每个端口网速: Ethernet 10M/s FastEthernet 100M/s GigabitEthernet 1000M/s TenGigabitEthernet 10000Mb/s 2 数据链路层(2层) Data…

Redis缓存污染了怎么办?

我们应用Redis缓存时,如果能缓存会被反复访问的数据,那就能加速业务应用的访问,但是,如果发生了缓存污染,那么,缓存对业务应用的加速作用就减少了。 在一些场景下,有些数据被访问的次数非常小&…

实现自己的数据库二

一 前言上次数据库支持了一个测试表的插入和查询,但是数据全部保存到磁盘中的,如果程序重启后,数据都会全部丢了,所以需要持久化到磁盘上,像sqlite一样,简单的将数据库的数据保存到一个磁盘文件上。二 实现…

【Quicker】您的指尖工具箱

在日常学习和工作中我们常常用到各种各样的小工具,比如:截图并编辑、取色、文字识别、公式识别等等.   倘若这每一项功能都下载一个程序,则会显得非常冗杂。因此,用一个工具箱将这些功能集合起来,则是一个不错的解决…

详解Windows通过命令行查看电脑连接过的WIFI密码

CONTENT打开命令行进入命令行下的netsh工具查看连接过的WiFi名称指定WiFi名称查看密码在Windows操作系统中(PS:Windows Vista及以后的Windows系统)可以通过命令行工具netsh查看和更改电脑的无线连接设置,包括WiFi。本篇博客将详细…

看完流浪地球2,这些功课你必须要补

昨天看了流浪地球2,里面的信息量太大了,回来补充了一些功课,这些知识,看完,才算对流浪地球2有了进一步了解。地球人的航天路径我们的太空航程是什么样子的呢?要从第二次世界大战开始。回形针计划&#xff1…