Php 如何集成这些代码以防止会话劫持

Php 如何集成这些代码以防止会话劫持,php,session,session-hijacking,Php,Session,Session Hijacking,我正在使用它来集成针对会话劫持的某种级别的保护(页面底部)。 虽然我能理解文章解释的基本内容,但我对所有这些都还不熟悉,我只是不能确定我应该做什么 我知道这将如何工作: <?php session_start(); if (isset($_SESSION['HTTP_USER_AGENT'])) { if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) { /* Pro

我正在使用它来集成针对会话劫持的某种级别的保护(页面底部)。 虽然我能理解文章解释的基本内容,但我对所有这些都还不熟悉,我只是不能确定我应该做什么

我知道这将如何工作:

<?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中传递指纹,然后在每个页面上使用$\u GET?有谁能帮我将这两段代码合并成一个文件,我可以将其包含在所有PHP文件中?

是的,您需要将此标记添加到任何URL,然后在每个页面上检查它

基本上,你想要完成的就是密码学家所说的暂时性 (数字使用一次)。其思想是使用参数生成NONCE,然后验证参数是否未被篡改

理想情况下,这应该是一个用一些随机的东西腌制的杂烩 而且用过一次。有许多图书馆将为您提供这方面的服务。 请记住,散列不是对称的,也就是说,您不能取消散列请求变量以查看它是否是相同的

您可以做的是对参数进行散列并比较散列。记住盐是很重要的,因为没有它们,你很容易受到彩虹表的影响

另外,如果使用
$\u REQUEST
而不是
$\u GET
,则可以对
$\u POST
$\u GET
重复使用相同的逻辑

你可以看看这个库,比如, 您还可以从Wordpress借用nonce生成代码