我使用这些医生集成了一定程度的保护,防止会话劫持(页面底部)。虽然我能理解这篇文章所解释的基本知识,但我对这一切还不熟悉,我只是无法指出我应该做什么。
我知道这是怎么回事:
<?php
session_start();
if (isset($_SESSION['HTTP_USER_AGENT']))
{
if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))
{
/* Prompt for password */
exit;
}
}
else
{
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
}
?>
..。我有点理解这能让上面的东西更安全:
<?php
$string = $_SERVER['HTTP_USER_AGENT'];
$string .= 'SHIFLETT';
/* Add any other data that is consistent */
$fingerprint = md5($string);
?>
但是,我仍然坚持将两者合并成一个工作脚本。文档声明:
我们应该将此指纹作为URL变量传递。
那是什么意思?我是否需要在网址中传递指纹,然后在每一页上使用$_GET?谁能帮我把这两个代码片段组合成一个文件,我可以把它包含在我所有的PHP文件中?
发布于 2013-12-21 15:11:29
是的,您需要将此令牌添加到任何urls中,然后在每个页面上检查它。
基本上,你想要完成的是密码家所说的“现在”(一次使用的数字)。其思想是使用params生成当前值,然后验证params没有被篡改。
理想情况下,这应该是一个散列,与一些随机的东西,并使用一次。有许多库将为您处理它。请记住,散列是不对称的,也就是说,您不能取消散列请求变量来查看它是相同的。
您可以做的是获取参数的散列并比较散列。记住盐是很重要的,因为没有盐,你很容易受到彩虹桌的影响。
另外,如果您使用的是$_REQUEST
而不是$_GET
,您可以为$_POST
和$_GET
重用相同的逻辑。
您可以查看这个库--例如,http://fullthrottledevelopment.com/php-nonce-library --您也可以从Wordpress借用现在生成的代码
https://stackoverflow.com/questions/20723369
复制