0

我正在使用这些文档来集成一定程度的会话劫持保护(页面底部)。虽然我可以理解文章解释的基本内容,但我对这一切仍然很陌生,我只是无法确定我应该做什么。

我知道这将如何工作:

<?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 变量传递。

这意味着什么?我需要在 URL 中传递指纹,然后在每个页面上使用 $_GET 吗?谁能帮助我将这两个代码片段合并到一个文件中,我可以将其包含在我的所有 PHP 文件中?

4

1 回答 1

1

是的,您需要将此令牌添加到任何 url,然后在每个页面上检查它。

基本上,您要完成的是密码学家所说的 NONCE(使用一次的数字)。这个想法是使用参数生成 NONCE,然后验证参数没有被篡改。

理想情况下,这应该是用随机的东西加盐并使用一次的哈希。有许多图书馆会为您处理它。请记住,散列不是对称的,即您不能取消散列请求变量以查看它是同一件事。

您可以做的是获取参数的哈希值并比较哈希值。记住盐是很重要的,因为没有它们你很容易受到彩虹表的影响。

此外,如果您使用 $_REQUEST 而不是,您可以为两者重用相同的 $_GET 逻辑 $_POST $_GET

你可以看看这个库,例如 http://fullthrottledevelopment.com/php-nonce-library 你也可以从 Wordpress 借用随机数生成代码

于 2013-12-21T23:11:29.123 回答