1

我目前的任务是开发最重要的安全性股票市场数据 API。我能够使用 JWT、API 密钥、中间件身份验证来保护传入的 GET 请求。

假设当用户未登录时,众所周知,所有 http 方法 esp GET 都以 http 状态 401 未经授权的访问响应。

我的问题是当用户登录我们的应用程序时,现在可以成功查询 API 请求(服务器到服务器),但是当我将请求链接复制到浏览器新选​​项卡(比如 chrome)时,我可以看到回复。这是预期的,因为用户已登录,但我希望在浏览器中看不到请求响应。我们的其他竞争对手使用 POST 来对抗浏览器的 GET 默认值。

我们应该转向 POST 吗?我正在苦苦挣扎,因为 GET 是请求东西的正确 http 方法。

4

2 回答 2

1

对于股票市场数据之类的私人资料,我的第一选择是发布请求。

我曾经通过检测浏览器来阻止来自浏览器的 GET API 请求,基于诸如用户代理字符串和自定义头部元数据之类的东西,但根据经验,这不是一个完美的解决方案。

我过去使用的另一个技巧是使用简单的加密算法(它不安全但速度很快。这只是分散注意力)来加密值。因此,如果有人确实提取了 json 响应,则数据将是垃圾,除非使用密钥解密,在您的情况下这可能是 jwt 令牌。

同样,这些技巧对于高技术人员的安全无济于事,但足以分散常规到平均反向工程技巧的注意力。同样免责声明,我从未将 GET 用于任何重要的财务和股票相关信息。我的规则是 GET 用于普通的填充物,而 POST 用于重要的东西。

于 2019-10-06T13:00:48.003 回答
0

POST如果您想在浏览器窗口中隐藏输出,最好移动到。与 一样GET,浏览器将始终直接显示输出。

但是,请注意,如果有人想查看 API 响应,他们仍然可以使用 JS 模拟 API 调用并在浏览器控制台中查看响应,或者使用 Postman 之类的客户端来获取响应。如果他们有适当的令牌,他们总是可以检查您的响应,没有办法绕过它。

我相信它也在新选项卡中工作,因为用户已登录并且 JWT 令牌以可从新选项卡访问的方式存储在 cookie / localstorage / 中。您的服务器也可以访问它。

如果您使用 JS 应用程序发送令牌(可能是 React?)并调整您的服务器以每次通过请求标头接受令牌,在这种情况下,仅打开该 url 将不再起作用,因为它会丢失令牌请求标头。

于 2019-10-06T12:59:02.750 回答