1

我想拒绝访问者访问页面但仍使用这些页面。我怎样才能:

~ 使页面不可见,但允许它处理 ajax 请求。

~ 使 PHP 文件不可见,但将其包含在脚本中。

看来我需要htaccess。我尝试使用它,但它阻止了我将该文件用作包含。

对于仅 ajax 的事情,似乎我可以在仅 ajax 页面中使用它:

<?php
$AJAX = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
        $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest');
if ($AJAX){
    // echo ajax code.
}
?>

这可靠吗?

标签:仅通过ajax

4

2 回答 2

2

完成第二个问题的一种方法是使脚本可用于服务器端包含和使用但不能从客户端访问,是将其添加到包含您希望以这种方式保护的脚本的文件夹中的 .htaccess 文件中:

deny from all

现在尝试浏览脚本,您应该无法访问它。这适用于 .htaccess 文件所在的整个目录。

像这样“屏蔽”客户端通过 Web 服务器访问 php 文件的另一种方法是将 php 文件放在wwwroot/public_html之外的目录中。

在您的 PHP 配置中,您必须将此目录添加到您的包含搜索路径中,或者只是通过正确的相对路径或使用绝对路径来包含它。

例如,如果你有 root_ contains_folder/wwwroot/index.php 和 root_ contains_folder/app/core.php,在 index.php 中你可以有

require_once('../app/core.php');

和 core 将被包括在内,但浏览器永远无法自行访问 core.php。(如果可以的话,它必须通过像 www.facing-site.com/../app/core.php 这样的 URL——你的网络服务器绝不应该允许!)

于 2012-04-20T22:32:33.110 回答
1

你不能做这些事情:当脚本发出 AJAX 请求时,发送请求的是用户的浏览器。如果您希望客户端脚本看到您的内容,浏览器必须能够看到它。

您可以通过隐匿性应用一些安全性,例如通过在脚本中放置某种身份验证令牌。这不会为您提供太多保护,因为用户所要做的就是阅读 JS 以获取令牌,但它会阻止临时访问者四处闲逛。您的“如果 XHR”正在有效地执行此操作 - 如果地址放在地址栏中,浏览器通常不会发送该标题,但用户可以轻松地在您的 AJAX 代码之外获得相同的效果。

于 2012-04-20T22:28:19.933 回答