如何确保我的 PHP api 只能由特定的 JavaScript 页面使用
How can I make sure that my PHP api can only be used by a specific javascript page
我有一个PHP页面("一个API"(,它根据GET字符串输入执行服务器端操作(例如将信息输入数据库(。
我是否可以保护它,以便只有特定站点上的 JavaScript 代码可以访问 api,包括保护它,例如,防止有人在站点上输入 JavaScript 控制台?
不,不可能完全防止这种情况。
但是,您可能会使它更加困难。例如:
- 要求
Referer
标题指向该页面(但是,某些浏览器不发送Referer
( - 您还可以检查
X-Requested-With
是否等于XMLHttpRequest
您使用的JS库是否设置了该库。
你可以
,但只能部分。例如,Google使用了一种与$_SERVER["HTTP REFERER"]匹配的API密钥方法,但这些东西很容易被伪造。只要确保用户需要真正的身份验证才能获得真正的安全性(更新/编辑/删除等(。
很简单,
如果您要向公众公开页面,则将输入视为不受信任。礼貌地要求用户不要看密钥是行不通的。始终根据用户的凭据验证您获得的任何输入。
我会使用一种既定的方法(而不是你自己的方法(使用用户的凭据登录并在服务器端验证输入。客户端上没有办法强迫用户不采取特定操作(例如,调用您的页面或*咳嗽*复制音乐文件*咳嗽*(。这项技术将被称为DRM或类似的东西
。另一个问题是您使用 GET 请求来永久更改服务器上的状态。不要这样做:改用 POST(或 PUT 或 DELETE(请求。
相关文章:
- 我如何才能确保计时器设置为每天4点半,所以我不会;不用在Javascript中提及某个日期
- 如何确保在浏览我的plone网站时始终启用浏览器中的javascript
- 如何确保只有您的javascript才能连接到您的Web服务器
- Python Javascript哈希库,以确保JSON对象在传输过程中不会损坏
- 确保Javascript支持多个库(例如Angular 1.5,jQuery 2.2.0,ckEditor 4.x,pd
- 我们可以用来确保Javascript中精确精度的最大数字
- 确保执行顺序:javascript
- 如何确保我的谷歌图表数据在Javascript中从内存中删除
- 用Javascript编写一行代码以确保选中复选框
- JavaScript-确保多个字符串不受干扰的整洁方式;t彼此相等
- javascript如何确保用户在用户名框中输入文本
- Javascript:如何确保"这个“;在一个对象内总是相同的
- Javascript Regex确保最后3个字符是数字
- Javascript/jQuery:确保在下拉菜单中添加唯一选项
- JavaScript循环(确保我的循环没有重写)
- HTML5 Javascript:如何确保绘制的对象不能离开画布
- Javascript如何确保JQuery .append显示
- Javascript:如何确保onClick事件只在先前事件完成后触发
- JavaScript:如何确保此函数只返回完全填充的数组
- JavaScript 如何确保用户输入 1 到 100 之间的数字