如何禁止代理进行跨域请求?

2019-04-30 12:44:52 +08:00
 wmui

后端设置了 CORS,Access-Control-Allow-Origin: https://www.test.com ,但是这样做通过代理工具是可以正常获取数据的(如 postman )。如何做才能不让本地代理获取数据呢,如果不能阻止的话,岂不是可以获取所有数据?菜鸟求大神指点一二

2333 次点击
所在节点    问与答
17 条回复
tomczhen
2019-04-30 12:55:44 +08:00
你猜浏览器是怎么获取到 Access-Control-Allow-Origin 头的值的?
iamaprin
2019-04-30 12:57:36 +08:00
CORS 只对浏览器生效,这种问题从服务端解决。
wmui
2019-04-30 14:26:31 +08:00
@iamaprin 服务端应该如何解决呢?限制请求频率吗?求提供思路
cydian
2019-04-30 14:29:03 +08:00
你如果是不需要权限的接口,cors 是防止直接调用数据的。
给接口上权限。
cydian
2019-04-30 14:29:18 +08:00
@tomczhen 怎么获取的?这个问题很有意思
wmui
2019-04-30 14:31:18 +08:00
@tomczhen 是不是服务端判断下请求来源,如果是是代理拒绝掉就行了
Felldeadbird
2019-04-30 14:54:03 +08:00
加域名鉴权啊,白名单才可以跨域。
Felldeadbird
2019-04-30 14:55:49 +08:00
补充一下详情吧。
首先,我后端是 www.abc.com
我允许 www.test.com 对我发起跨域请求。
我后端会判断当前域名是否来自 www.test.com ,其次还会判断他 IP 地址是否对应上。都符合才会进入业务处理。。
wmui
2019-04-30 15:52:00 +08:00
@Felldeadbird 万分感谢
Axurez
2019-04-30 15:58:55 +08:00
伪造请求是不可能防止的。
ochatokori
2019-04-30 16:43:03 +08:00
postman 之类的是防不住的,不管要求什么都能伪造,你只能增加伪造成本

跨域是浏览器的安全策略,除了浏览器什么都不是
ochatokori
2019-04-30 16:50:15 +08:00
至于增加伪造成本,比如
1,检查 user agent 是不是浏览器(伪造也很简单
2,复杂跨域请求是否有 options 请求(这是浏览器默认行为,但是攻击者不一定会做
3,添加 token 验证
lhx2008
2019-04-30 16:55:15 +08:00
获取到所有数据是很正常的,因为这是一个 url,要增加获取数据的成本,就是反爬虫领域了。包括本地 js 检测是不是浏览器环境,和服务器协商一个 token, 服务端再验证,当然 js 本身也要混淆加密,加大破解难度
JmmBite
2019-04-30 17:18:08 +08:00
跨域只允许服务端白名单 IP 调用。

客户端发起的话,一切皆可伪造,唯有难度系数不同。
JmmBite
2019-04-30 17:19:38 +08:00
服务端可以 N 层套娃,还得限制 IP 频次。
shintendo
2019-04-30 17:28:08 +08:00
禁止跨域请求是浏览器对用户(而不是对你服务器)的保护措施,用户乐意的话可以让浏览器关闭这种保护,更不要说浏览器以外的客户端
wmui
2019-04-30 17:54:37 +08:00
感谢楼上各位,我得回去补习下反爬虫

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/560068

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX