如何确保人类不会查看PHP脚本URL的结果?
最近,当查看正在进行AJAX调用的站点的源时,我尝试按照浏览器中的链接进行操作
www.site.com/script.php?query=value
Run Code Online (Sandbox Code Playgroud)
我没有看到我期望看到的结果,而是看到一条消息,说明只有脚本才能查看该页面.
如何将脚本限制为仅允许脚本访问它?
更新:
这是页面DEMO页面
Joh*_*her 10
简短的回答:你做不到.
答案很长:通过在HTTP请求中要求特殊的标头值,你可以更难做到这一点(设置Accept to application/json是常见的).在服务器端,只需检查以确保标头设置为您期望的值.这将使常规用户获得您提到的消息,并且您的脚本将正常工作.当然,高级用户将能够轻松解决这种限制,因此不要依赖它来提高安全性.
使用php,您可以检查并仅在通过ajax调用页面时显示结果
function isAjax() {
return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'));
}
if(isAjax()) {
// display content
} else {
// not ajax, dont show
echo 'Invalid Request';
}
Run Code Online (Sandbox Code Playgroud)