我有一些页面返回通过AJAX在jQuery中使用的JSON请求。我需要做的是以某种方式阻止直接访问该文件。因此,只允许JSON(AJAX)请求,但不能直接访问该文件。
所以,如果我有以下jQuery代码:
$.getJSON("ajax/returnDate.php", {
id: $(this).val()
},function (data) {
//more code
}
)
未经授权的用户可以看到此代码。这将允许他们转到以下URL并获取他们需要的数据。 domain.com/ajax/returnDate.php
所以我需要编写代码以不允许直接访问returnDate.php但允许进行json请求。
我该如何处理?
由于
答案 0 :(得分:0)
Ajax请求应该有一个额外的标头HTTP_X_REQUESTED_WITH
,其值为xmlhttprequest
,因此您可以添加一个检查
$_SERVER['HTTP_X_REQUESTED_WITH'] == 'xmlhttprequest'
请注意,这仍然可以通过卷曲库来模仿,它只是一个额外的安全线
答案 1 :(得分:0)
我建议如下:
答案 2 :(得分:0)
当您使用jQuery进行ajax调用时,它会设置标头HTTP_X-Requested-With
。您可以使用header(Location: anything.php)
函数
$isXhr = isset($_SERVER["HTTP_X_REQUESTED_WITH"])
AND strotlower($_SERVER["HTTP_X_REQUESTED_WITH"]) == "xmlhttprequest";
请注意确保正确的安全性,因为此标题可以在标题中手动注入并由某些mallciuos用户访问该页面。