我有一个PHP页面(“一个API”),它根据GET字符串输入执行服务器端的操作(例如,将信息输入到数据库中)。
我是否可以保护它,以便只有特定网站上的JavaScript代码才能访问api,包括保护它,例如,某人在网站上输入JavaScript控制台?
答案 0 :(得分:3)
不,不可能完全抵御它。
但是,你可能会让它变得更加困难。例如:Referer
标题指向该页面(某些浏览器不会发送Referer
,但是)X-Requested-With
,您还可以检查XMLHttpRequest
是否等于{{1}}。答案 1 :(得分:1)
你可以,但只是部分。例如,Google使用与$ _SERVER [“HTTP REFERER”]匹配的API密钥方法,但这些东西很容易被伪造。只需确保用户需要对需要真正安全性(更新/编辑/删除等)的内容进行真正的身份验证。
答案 2 :(得分:0)
很简单,如果您向公众公开页面,则将输入视为不可信。礼貌地询问用户不看钥匙是行不通的。始终验证您根据用户凭据获得的任何输入。
我会使用已建立的方法(不是自己的滚动)来登录用户的凭据并验证服务器端的输入。客户端无法强迫用户不采取特定操作(例如,呼叫您的页面或*咳嗽*复制音乐文件*咳嗽*)。这项技术将被称为DRM或类似的东西
另一个问题是您正在使用GET请求永久更改服务器上的状态。不要这样做:改为使用POST(或PUT或DELETE)请求。