恶搞$ session ['xyz']

时间:2010-09-18 14:53:14

标签: php

我正在改进保护PHP页面的方法。我想知道是否有人可以通过在main.php中向$ _session ['xyz']发送虚假的引用来向我提供欺骗代码?

在发送欺骗值之前,我是否必须知道会话变量?

到目前为止,我尝试了下面的代码。

    <?php
header("Referer: http://domain.com.sg");
$host = "domain.com.sg"; 
$file = "demo.php";

$hdrs = array( 'http' => array(
    'method' => "POST",
    'header'=> "accept-language: en\r\n" . 
        "Host: $host\r\n" .
        "Referer: http://$host\r\n"
    )
);

$context = stream_context_create($hdrs);
$fp = fopen("http://domain.com.sg/dem251.php", 'r', false, $context);
fpassthru($fp);
fclose($fp);

?>

1 个答案:

答案 0 :(得分:3)

会话值保留在服务器端。除非您的PHP启用了register_globals,否则远程用户可以直接在会话中设置内容的唯一方法是通过您的代码。所以如果你没有像:

那样的话
$_SESSION['xyz'] = $_GET['xyz'];

在任何地方,然后它是“安全的”。

对于referer本身,这只是一个HTTP头,完全在用户的控制之下。最好完全忽略引用者,或者至少将其视为有毒废物。