【发布时间】:2012-08-20 12:08:46
【问题描述】:
问题在标题中。
我可以在 webroot 的 php 文件中访问$_COOKIE['blah'],但出于安全目的,我在 webroot 之外包含了无法访问它的内容。
示例
/home/wwwroot/index.php 可以读取 $_COOKIE['blah']
它的完整路径是http://www.mydomain.com/index.php。
/home/scrape/process.php 可以 不 读取 $_COOKIE['blah']
但它在webroot之外,并且scrape文件夹不能在服务器之外访问。
Index.php 可以回显存储在 cookie 中的值,并将带有该值的时间戳写入日志文件。这行得通。
没有发布所有代码并试图保持简单,它只是像这样简单:
<?PHP
include '../scrape/process.php'; // THIS FILE IS OUTSIDE THE WEBROOT
$cook=$_COOKIE['blah'];
echo "Cookie value is : " . $_COOKIE['blah'] ;
error_log('['.date("F j, Y, g:i a e O").']'.$cook."<br /> \n", 3, $phperrorPath);
?>
<?PHP
echo 'Outer cookie is : ';
echo outer_cookie();
?>
Process.php 函数在 index.php 中被调用,然后它将返回 cookie 的值,并用时间戳和 cookie 值写入它自己的日志文件。这不起作用。日志文件只有时间戳,没有值,它不会向 index.php 返回任何内容。
function outer_cookie()
{
$cook=$_COOKIE['blah'];
error_log('['.date("F j, Y, g:i a e O").']'.$cook."<br /> \n", 3, $phperrorPath);
return $cook;
}
如何让 process.php 读取 cookie 数据?我显然无法将 cookie 路径设置为 webroot 之外的内容,即使我可以,那么 webroot 中的所有内容都无法访问它...
我必须在 cookie 旁边使用 $_SESSION 吗?我不想不得不重复这项工作......
【问题讨论】:
-
cookie 基于设置的域 - 如果您在
example.com中设置 cookie,它将在test.example.com和 `test2.example.com 中可用,您的结构如何? -
你是如何准确地测试这个的?文件在文件系统中的什么位置都可以访问 cookie。
-
@MihaiIorga 对,我理解,但是 process.php 文件不在域的 Web 根目录中,所以当它只能是 mydomain.com 的一部分时,如何才能看到它由服务器而不是由客户端访问?
-
@deceze my index.php 可以回显 cookie 的值并将其写入日志。 process.php 设置为将 cookie 的值从 GET 返回到 index.php,并将其写入日志。 Process.php 返回 null 并且不向日志写入任何内容,只是一个时间戳,旁边没有任何内容。
-
显示您的代码。该文件中的代码是如何执行的,代码到底是什么?