后端设置了 CORS,Access-Control-Allow-Origin: https://www.test.com ,但是这样做通过代理工具是可以正常获取数据的(如 postman )。如何做才能不让本地代理获取数据呢,如果不能阻止的话,岂不是可以获取所有数据?菜鸟求大神指点一二
1
tomczhen 2019-04-30 12:55:44 +08:00
你猜浏览器是怎么获取到 Access-Control-Allow-Origin 头的值的?
|
2
iamaprin 2019-04-30 12:57:36 +08:00 via Android
CORS 只对浏览器生效,这种问题从服务端解决。
|
4
cydian 2019-04-30 14:29:03 +08:00 via Android
你如果是不需要权限的接口,cors 是防止直接调用数据的。
给接口上权限。 |
7
Felldeadbird 2019-04-30 14:54:03 +08:00
加域名鉴权啊,白名单才可以跨域。
|
8
Felldeadbird 2019-04-30 14:55:49 +08:00 1
补充一下详情吧。
首先,我后端是 www.abc.com 我允许 www.test.com 对我发起跨域请求。 我后端会判断当前域名是否来自 www.test.com ,其次还会判断他 IP 地址是否对应上。都符合才会进入业务处理。。 |
9
wmui OP @Felldeadbird 万分感谢
|
10
Axurez 2019-04-30 15:58:55 +08:00
伪造请求是不可能防止的。
|
11
ochatokori 2019-04-30 16:43:03 +08:00 via Android
postman 之类的是防不住的,不管要求什么都能伪造,你只能增加伪造成本
跨域是浏览器的安全策略,除了浏览器什么都不是 |
12
ochatokori 2019-04-30 16:50:15 +08:00 via Android
至于增加伪造成本,比如
1,检查 user agent 是不是浏览器(伪造也很简单 2,复杂跨域请求是否有 options 请求(这是浏览器默认行为,但是攻击者不一定会做 3,添加 token 验证 |
13
lhx2008 2019-04-30 16:55:15 +08:00 via Android
获取到所有数据是很正常的,因为这是一个 url,要增加获取数据的成本,就是反爬虫领域了。包括本地 js 检测是不是浏览器环境,和服务器协商一个 token, 服务端再验证,当然 js 本身也要混淆加密,加大破解难度
|
14
JmmBite 2019-04-30 17:18:08 +08:00
跨域只允许服务端白名单 IP 调用。
客户端发起的话,一切皆可伪造,唯有难度系数不同。 |
15
JmmBite 2019-04-30 17:19:38 +08:00
服务端可以 N 层套娃,还得限制 IP 频次。
|
16
shintendo 2019-04-30 17:28:08 +08:00 1
禁止跨域请求是浏览器对用户(而不是对你服务器)的保护措施,用户乐意的话可以让浏览器关闭这种保护,更不要说浏览器以外的客户端
|
17
wmui OP 感谢楼上各位,我得回去补习下反爬虫
|