如何确保我的 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(请求。