阻止外部访问.php

时间:2012-09-03 10:46:34

标签: php jquery .htaccess external

有没有办法阻止外部访问.php文件(比如在URL中)并允许.qup文件被jquery post调用?

谢谢! Wouter 0100

3 个答案:

答案 0 :(得分:2)

我认为是因为您要like in the URL要阻止GET请求。

您可以将其放在脚本的顶部,以防止人们通过网址访问它。然后,您将只能POST,例如jQuery POST。

<?PHP
if($_SERVER['REQUEST_METHOD']!="POST")
    header('HTTP/1.0 401 Unauthorized');
    exit;
?>

请注意,其他来源仍然可以POST到表单。此方法仅阻止通过GET请求等其他方法进行访问。即在地址栏中输入网址。

答案 1 :(得分:1)

正如您所提到的,允许使用jquery post访问.php等同于提供外部访问。你可以允许jquery post访问php文件的唯一方法(也就是不太可靠)是检查PHP代码中的$_SERVER['HTTP_REFERER']变量是否与发送jquery post的URL相同。 / p>

答案 2 :(得分:1)

更简单的方法是使用jquery发送一个标头,稍后用PHP读取。它绝不是真正的保护,但它确实阻止用户在没有首先检查它应该发送的标头的情况下发送请求。

例如,在你的jquery调用中:

$.ajax({
    url: url,
    beforeSend: function(xhr) {
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    },
    success: function(data) {
    }
});

在你的PHP中:

if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
    header("HTTP/1.0 405 Method Not Allowed");
    exit();
}