我有一堆辅助文件和解析器,其中一些是通过AJAX调用的。我的理解是我不能使用.htaccess来阻止对这些文件的访问,因为它会破坏AJAX。所以我的问题是:允许直接访问这些文件是否有任何伤害或危险?如果是这样,我如何允许AJAX但阻止用户访问它们?
答案 0 :(得分:1)
您可以使用php $_SERVER
值来验证ajax请求,但如果用户使用spoofing
它也不起作用,如果您在php脚本中有完美的验证,请不要担心直接访问
if(isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) && ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' ) )
{
//Your response
} else {
//I hate users redirect
}
答案 1 :(得分:1)
Ajax 用户只能以受控方式访问它们。
如果可以从Ajax访问脚本/文件,则无法阻止某人直接访问它们。您可以设置路障,例如寻找某些标题,但人们可以并且会找到解决方法。
只要您的代码是安全的,允许直接访问它们没有任何危害或危险:)
例如,如果您要让Ajax拨打POST /message/delete?id=1
之类的电话,您最好确保来电者有权删除ID为1的邮件。
过滤并验证所有输入并进行适当的访问检查,您应该像互联网上任何其他网站一样安全。
答案 2 :(得分:0)
为了防止用户直接在浏览器中加载php文件但仍然允许ajax请求通过并允许该文件包含在文档中,您可以尝试将以下内容添加到您希望防止直接访问的脚本顶部
Club 1, Club 2, Club 3, Club 4, Club 5, Club 6, Club 7, Club 8, Club 9, Club 10, Club J, Club Q, Club K, Club A, Heart 1, Heart 2, Heart 3, Heart 4, Heart 5, Heart 6, Heart 7, Heart 8, Heart 9, Heart 10, Heart J, Heart Q, Heart K, Heart A, Spade 1, Spade 2, Spade 3, Spade 4, Spade 5, Spade 6, Spade 7, Spade 8, Spade 9, Spade 10, Spade J, Spade Q, Spade K, Spade A, Diamond 1, Diamond 2, Diamond 3, Diamond 4, Diamond 5, Diamond 6, Diamond 7, Diamond 8, Diamond 9, Diamond 10, Diamond J, Diamond Q, Diamond K, Diamond A