是否可以将API限制为仅一个Web界面/应用程序?

时间:2012-02-29 00:54:02

标签: javascript ajax browser cross-domain

我对跨省政策有疑问。

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

当Web应用程序初始化时,会通过ajax从服务器创建一个唯一的“密钥”或“令牌”,并作为识别它的方式发送给客户端。在每次ajax调用时都会发回令牌以进行验证。如果在两小时内未验证,则PHP脚本将删除它,并且用户需要再次验证他/她自己。

如果用户发送另一个ajax呼叫(即,如果活动带有相关令牌),则令牌将其到期再设置为2小时。

在每次通话时,我都会验证令牌,然后处理请求。一切都运作良好,但我的问题是面向安全的。

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

1 个答案:

答案 0 :(得分:3)

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登录给你的用户登录。(如果你认为你没有登录API,因为它是一个表格或类似的东西,你自欺欺人 - 一个表格帖子就像其他任何东西一样“API” ......并且很容易在别处复制。)

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