是否可以将API仅限于一个web界面/应用程序
Is it possible to restrict an API to only one web interface/app?
我有一个关于跨来源策略的问题。
我有一个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请求。我甚至可以设置一个服务,允许我将所有对我的服务的请求代理到您的服务。。。因此,浏览器中的跨域安全性对您没有任何帮助。
- 缩放仅适用于一个图元
- onclick适用于一个按钮,但不适用于'不要为别人工作
- 响应于一个“;输入“;在<输入>领域
- JavaScript-getElementsByClassName适用于一个函数,但不适用于另一个函数
- 谷歌地点/几何库仅适用于一个国家
- 调整大小功能仅适用于一个维度
- jQuery 更改函数适用于一个页面,但不适用于另一个页面
- 使用 JavaScript 触发 CSS 动画淡入和淡出 - 仅适用于一个方向
- document.getElementById 适用于一个表单元素,但不适用于另一个表单元素
- 多个图表的Highchart背景颜色仅适用于一个图表
- 在单个页面上使用此.js 2 次时,它仅适用于一个实例
- 离子事件侦听器在每个屏幕上触发,只想应用于一个控制器
- 拖放区.js + Laravel-多文件上传不起作用(仅适用于一个文件)
- Node.js http 请求不仅适用于一个网站
- 将鼠标悬停在图像上以显示文本框,使用 JavaScript 仅适用于一个图像,因为我使用的是 getElementByI
- target_blank适用于两个javascript函数,即使它适用于一个javascript函数
- js代码适用于一个变量(?),如何使其适用于多个变量
- Javascript函数只适用于一个变量
- JS函数只适用于一个(第一个)元素
- jQuery只应用于一个元素