如何确保我的PHP api只能由特定的javascript页面使用

时间:2011-06-05 22:21:56

标签: php javascript get security

我有一个PHP页面(“一个API”),它根据GET字符串输入执行服务器端的操作(例如,将信息输入到数据库中)。

我是否可以保护它,以便只有特定网站上的JavaScript代码才能访问api,包括保护它,例如,某人在网站上输入JavaScript控制台?

3 个答案:

答案 0 :(得分:3)

不,不可能完全抵御它。

但是,你可能会让它变得更加困难。例如:

  • 要求Referer标题指向该页面(某些浏览器不会发送Referer,但是)
  • 如果您使用的JS库设置了X-Requested-With,您还可以检查XMLHttpRequest是否等于{{1}}。

答案 1 :(得分:1)

你可以,但只是部分。例如,Google使用与$ _SERVER [“HTTP REFERER”]匹配的API密钥方法,但这些东西很容易被伪造。只需确保用户需要对需要真正安全性(更新/编辑/删除等)的内容进行真正的身份验证。

答案 2 :(得分:0)

很简单,如果您向公众公开页面,则将输入视为不可信。礼貌地询问用户不看钥匙是行不通的。始终验证您根据用户凭据获得的任何输入。

我会使用已建立的方法(不是自己的滚动)来登录用户的凭据并验证服务器端的输入。客户端无法强迫用户不采取特定操作(例如,呼叫您的页面或*咳嗽*复制音乐文件*咳嗽*)。这项技术将被称为DRM或类似的东西

另一个问题是您正在使用GET请求永久更改服务器上的状态。不要这样做:改为使用POST(或PUT或DELETE)请求。