没搞懂 HTTP 请求的安全验证,求指导!

2022-06-02 17:02:24 +08:00
 Eyon

比如请求 https://abc.com/api ,服务器那边可能需要一个验证,比如要求 headers.Authorization === "abcdefg",

那么,也就是说我在请求是,必须在 headers 中添加 Authorization = 'abcdefg'就可以成功请求,这个逻辑没错吧?

问题是:

比如自己做个网站,浏览器打开首页,就需要从服务器提供的 API 中获取一些数据以供后续服务,API 那边定义是要求 headers.Authorization === 'abcdefg',所以前端写 axios 请求的时候,就加上了 authorization="abcdefg"这个请求,正常工作没有问题。可是,由于在浏览器中的请求标头中可以看到 Authorization:abcdefg 这个明文信息,任何人都可以看到,那不就是任何人都可以通过其他任何方式(比如 postman)来请求这个数据了吗?

当然,你可能会说加密。即便吧 abcdefg 加密成任何形式的密钥,但始终能在请求标头中看到加密后的密钥,用这个密钥发送请求依然可以成功,意义何在呢?

当然,这个问题一定是我自己哪里逻辑没搞清楚。求解答!

4912 次点击
所在节点    问与答
81 条回复
mxT52CRuqR6o5
2022-06-04 06:30:53 +08:00
为了防止被盗用一般都会时服务器转发的,让使用方自行解决老用盗用问题(比如这个时候我可以设计一个人机交互验证码),如果设计成可以直接客户端可以直接请求非转发的那种一般都会检查来源,会设置个白名单(但还是会有给非 web 端使用盗用风险)

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

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

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

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

© 2021 V2EX