是否可以将API仅限于一个web界面/应用程序

Is it possible to restrict an API to only one web interface/app?

本文关键字:web 于一个 界面 应用程序 API 是否      更新时间:2023-09-26

我有一个关于跨来源策略的问题。

我有一个web应用程序,它通过ajax获取数据,通常是JSON格式的。

当web应用程序初始化时,会通过ajax从服务器创建一个唯一的"密钥"或"令牌",并将其发送到客户端,作为识别它的手段。令牌在每次ajax调用时都会返回,以进行验证。如果在两个小时内没有验证,PHP脚本会将其删除,并要求用户再次对其进行身份验证。

如果用户发送另一个ajax调用(即,如果关联的令牌存在活动),则令牌将其到期时间再设置2小时。

在每次调用时,我都会验证令牌,然后处理请求。一切都很好,但我的问题是安全性。

由于令牌存储在客户端(非常粗糙,如window.token = 'YTM0NZomIzI2OTsmIzM0NTueYQ==';),恶意用户难道不可能检查代码,复制包括令牌在内的JavaScript,并创建另一个访问相同数据的应用程序吗?

Since the token is stored client-side (very crudely, like window.token = 'YTM0NZomIzI2OTsmIzM0NTueYQ==';), won't it be possible for malicious users to inspect the code, copy the JavaScript including the token, and create another app that will access the same data?

是的。

更让你不安的可能是:你的代币如何存储在客户端都无关紧要-他们甚至可以使用你向用户展示的相同API登录和其他任何东西一样。。。并且可以容易地在其他地方复制)。

跨域的东西与任何事情都没有什么关系——因为这是浏览器的客户端限制——旨在保护用户——而不是你的。我可以从桌面或服务器发出任何我想要的HTTP请求。我甚至可以设置一个服务,允许我将所有对我的服务的请求代理到您的服务。。。因此,浏览器中的跨域安全性对您没有任何帮助。