限制直接链接到某个目录中的AJAX页面

时间:2010-10-27 01:29:56

标签: ajax security .htaccess

我不想让人们直接进入AJAX目录中的页面,但仍然需要从他们的父页面提供服务。我尝试过很多.htaccess行,但它们都会从主页面中阻止它。总而言之,我不希望人们能够输入http://www.mysite.com/AJAX/page1.html并查看它,但需要通过AJAX将page1.html带入其父页面。

<LIMIT GET POST>
Order deny, allow
deny from all
</LIMIT>

阻止所有访问

您可以在父文件define('IS_IN_SCRIPT',1);中定义一个标志并在AJAX页面中检查它吗?这将适用于AJAX页面还是仅包含PHP?

3 个答案:

答案 0 :(得分:3)

Determining Referer in PHP

检查您的域中是否有$_SERVER['HTTP_REFERER'](或可接受域名列表)

然后重定向。

if (!empty($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'yourdomain.com') !== false) 
  { echo 'probably from your own site'; }

答案 1 :(得分:1)

你总是可以设置一些东西,这样如果没有通过GET或POST传递一个特定的参数,那么ajax页面只会将你重定向到其他地方。

在php中,它看起来像

if(!isset($_POST['some_var']))
  header('Location: somePage.html');

答案 2 :(得分:0)

$$ zoe_daemon

您需要“链接”文件才能通过AJAX从父页面打开私人文件。

/*this is simple "linker" file to open private file in folder named "private" from parent page via AJAX.*/
//begin linker.php
<?php
   $link = $_GET["link"];
   include "../private/$link.php";
?>
//end linker.php

然后,“private”文件夹中的文件需要检查请求URI是否包含字符串“private”;对于想要直接私有文件的用户无效。 对于axample,如果您将此代码放在要放置的操作代码之前,则无法直接访问名为“private”的文件夹中的“login.php”

//begin login.php
$count = 0;
$test = str_replace("name_of_directory_cannot_directly","dummy_string",$_SERVER['REQUEST_URI'], $count ); //or
if ($count > 0) {
    die "Ooouuuppppsss, you cannot access this file directly");
}
/*
//your code here....
*/
//end login.php