资讯专栏INFORMATION COLUMN

关于跨域限制,仅仅是浏览器的行为,和服务端无关

flyer_dev / 2842人阅读

摘要:带着这个问题查了一些资料,讲同源策略的很多,很多地方都说这是安全的基石,但是没看到哪里明确的提到这只是浏览器的行为,和服务端没有关系。

前段时间写了个前后端分离的项目,前后端都是我一个人完成,通信都是通过接口进行的,这时候就要面对接口安全的问题,api无法使用laravel框架提供的csrf-token等安全措施,我只做了个简单的基于session的验证。我的所有api都是通过ajax来进行的,心想既然有跨域限制,不允许跨域的话是不是就万事大吉了呢?跨域限制仅仅是浏览器的行为吗?服务器有跨域限制吗?

(此处有误,可以使用csrf-token,但是在发起post请求前必须获取到cookie中的token,将其加入header中,可以加在单页的入口html里,或者来一次get请求)

如果只是浏览器的行为,那么就能轻松绕过了,没有意义。

带着这个问题查了一些资料,讲同源策略的很多,很多地方都说这是web安全的基石,但是没看到哪里明确的提到这只是浏览器的行为,和服务端、http没有关系。

于是自己做个实验咯,实验步骤如下:

在阿里云服务器上用beego起一个后端应用,弄一个test接口,不设置Access-Control-Allow-Origin

服务器上写一个静态页面,有个按钮点击发送ajax请求test接口

本地弄一个同样的页面

本地弄一个代理服务器,转发test至阿里云服务器

分别进行如下测试:

线上页面在浏览器中发请求到线上服务器

本地页面在浏览器中发请求到线上服务器

修改allow-origin为*,本地页面在浏览器中发请求到线上服务器

不设置allow-origin,本地页面在浏览器中通过代理服务器请求接口

不设置allow-origin,使用postman等工具请求接口

测试结果:除了第二种情况,其他的均能进行跨域请求,结论就是跨域限制仅仅是浏览器的行为,通过代理服务器,或者其他工具发送请求就能轻松绕过。

那么,同源策略是不是没有什么卵用呢?
错,同源策略是web安全的基石,当然很重要了

因为:

随着互联网的发展,"同源政策"越来越严格。目前,如果非同源,共有三种行为受到限制。
(1) Cookie、LocalStorage 和 IndexDB 无法读取。
(2) DOM 无法获得。
(3) AJAX 请求不能发送。

如果在其他域名能读qq.com的cookie那就相当于它能拿到登陆权限

reference:
浏览器同源政策及其规避方法-阮一峰
浏览器的同源策略-mdn

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11296.html

相关文章

  • 20K前大佬面试(关于如何回答ajax跨域问题)

    摘要:在接触前端开发起,跨域这个词就一直以很高的频率在我们学习工作中重复出现,最近在工作中遇到了跨域的相关问题,这里我把它总结记录一下。 在接触前端开发起,跨域这个词就一直以很高的频率在我们学习工作中重复出现,最近在工作中遇到了跨域的相关问题,这里我把它总结记录一下。关于跨域,有N种类型,现在我只专注于ajax请求跨域(ajax跨域只是属于浏览器同源策略中的一部分,其它的这里不做介绍),内容...

    Yangyang 评论0 收藏0
  • ajax跨域,这应该最全解决方案了

    摘要:关于,强烈推荐阅读跨域资源共享详解阮一峰另外,这里也整理了一个实现原理图简化版如何判断是否是简单请求浏览器将请求分成两类简单请求和非简单请求。 前言 从刚接触前端开发起,跨域这个词就一直以很高的频率在身边重复出现,一直到现在,已经调试过N个跨域相关的问题了,16年时也整理过一篇相关文章,但是感觉还是差了点什么,于是现在重新梳理了一下。 个人见识有限,如有差错,请多多见谅,欢迎提出iss...

    ytwman 评论0 收藏0
  • 跨域理解

    摘要:什么是跨域个人一句话解释如果与不同源,那么页面不能获取页面的资源。所以用同源策略来限制跨域是必须的。它是标准,是跨源请求的根本解决方法。 本文整理了一些有关跨域的基础知识和细节问题。 什么是跨域 个人一句话解释:如果 url A 与 url B 不同源,那么页面A不能获取页面B的资源。这里有两个关键词:url 和 同源,浏览器的同源策略就是针对两个url,它们满足以下三个条件,才是同源...

    zhongmeizhi 评论0 收藏0
  • 关于跨域攻击网络信标

    摘要:四跨域攻击跨域攻击可以理解为诱导受害者访问非法网站,黑客利用受害者的会话信息模拟请求,以达到篡改数据的目的。我们在百度上搜索一些关键字之后,访问其他网站时例如会发现,为何我刚刚搜索的关键字图片会在网页上显示那很有可能放置了百度的脚本代码。 本人工作中偶尔会和浏览器打交道,也遇到过一些坑,在此分享一下网页跨域访问的相关场景和知识,希望对读者有帮助。本文来自于我的博客网站:www.51th...

    ixlei 评论0 收藏0

发表评论

0条评论

flyer_dev

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<