会话ID不会通过url传播

时间:2014-04-19 17:02:54

标签: php security session cookies

我是一个php新手。我知道它会创建一个安全漏洞,但它仅用于测试和学习的原因。我发现session.use_trans_id = true和session.use_cookies = false设置强制浏览器通过url传输会话ID。但它没有发生。我正在使用两个php文件。为了更好地了解我在这里复制代码 我是test8.php文件 -

ini_set("session.use_cookies",0);
//ini_set("session.use_only_cookies",0);
ini_set("session.use_trans_sid",1);
session_start();
echo ini_get("session.use_trans_sid");
echo ini_get("session.use_cookies");
$_SESSION['name']="sovon";
?>
<form action="test9.php"  method="post" enctype="multipart-formn/data" >
<input type="text" name="name"/>
<input type="submit"/>
</form>
<a href="test9.php">click</a>

在test9.php文件中 -

session_start();
echo session_id();
echo "</br>";
echo ini_get("session.use_trans_sid");
echo  "</br>";
echo ini_get("session.use_cookies");
echo  "</br>";
echo $_SESSION['name'];

我是否提交表单或点击链接会话ID不通过网址传输。在test9.php文件中,session.use_trans_id再次变为false。但是变量的值没有显示出来。我通过在浏览器中停止cookie来尝试它。但仍然无法正常工作。

我理解错了吗?怎么了? 请帮我 ? 等待回答。

1 个答案:

答案 0 :(得分:0)

小心搞乱$ _SESSION,例如不要用数组初始化它,如:$ _SESSION = array()。无论如何,它在Windows上变得混乱。我不得不重新启动电脑以使会话再次正常工作。无论......

我在下面提供了您的脚本,删除了一些小错误。

我添加了&#39; var_dumps&#39; PHP维护用于存储会话密钥的所有相关领域。

请注意:

$ _SESSION [&#39;名称&#39;]始终保留。

1)会话ID在&#39; $ _ GET&#39;中返回如果单击链接,则为数组。

2)会话ID在&#39; $ _ POST&#39;中返回当你点击表格时。

P.S。在回答这个问题时没有使用任何cookie。

测试代码:Windows XP上的PHP 5.3.18。

Q23172926_index

<?php // Q23172926_index

ini_set("session.use_cookies",0);
//ini_set("session.use_only_cookies",0);
ini_set("session.use_trans_sid",1);
session_start();
echo ini_get("session.use_trans_sid");
echo ini_get("session.use_cookies");
$_SESSION['name']="sovon";
?>
<form action="Q23172926_test9.php"  method="post" enctype="multipart-form/data" >
<input type="text" name="name" value="who are you?"/>
<input type="submit" name="go" value="Go For It!"/>
</form>
<a href="Q23172926_test9.php">click</a>
<?php
var_dump(__FILE__ . ' after HTML output',
        '$_GET ==}', $_GET, '{== $_GET',
        '$_SESSION ==}', empty($_SESSION) ? 'no session yet' : $_SESSION, '{== $_SESSION',
        '$_COOKIE ==}',empty($_COOKIES) ? 'no cookies' : $_COOKIES, '{== $_COOKIES',
        '$_POST ==}', $_POST, '{== $_POST' );

Q23172926_test9

<?php // Q23172926_test9
var_dump(__FILE__ . '  before session_start() -- check $_GET / $_POST for session_id
        '$_SESSION ==}', empty($_SESSION) ? 'no session yet' : $_SESSION, '{== $_SESSION',
        '$_COOKIE ==}',empty($_COOKIES) ? 'no cookies' : $_COOKIES, '{== $_COOKIES',
         '$_POST ==}', $_POST, '{== $_POST' );

session_start();

var_dump(__FILE__ . ' After session start',
        '$_SESSION ==}', empty($_SESSION) ? 'no session yet' : $_SESSION, '{== $_SESSION'
        );

echo session_id();
echo "</br>";
echo ini_get("session.use_trans_sid");
echo  "</br>";
echo ini_get("session.use_cookies");
echo  "</br>";
echo 'Name should be here ==}', $_SESSION['name'] ,' {== Name should be here';