Php 如何防止HTTP欺骗?

Php 如何防止HTTP欺骗?,php,spoofing,Php,Spoofing,我们已经创建了一个数据库驱动的网站,使用PHP和设置cookies,现在需要防止HTTP欺骗,关于如何做到这一点有什么想法吗?我们是这方面的初学者,所以任何帮助都将是巨大的欺骗什么?HTTP只是一种传输数据的协议,它本身并不会被欺骗 要做的不是防止信息欺骗,而是永远不要信任客户机。对于cookie,存储一个散列伪随机值,在接受cookie数据之前与数据库进行比较 更新: 考虑到您特别关注的是cookies,我将更深入一点。在存储cookies时,有两件主要的事情需要关注 不要存储实际数据 根据数

我们已经创建了一个数据库驱动的网站,使用PHP和设置cookies,现在需要防止HTTP欺骗,关于如何做到这一点有什么想法吗?我们是这方面的初学者,所以任何帮助都将是巨大的

欺骗什么?HTTP只是一种传输数据的协议,它本身并不会被欺骗

要做的不是防止信息欺骗,而是永远不要信任客户机。对于cookie,存储一个散列伪随机值,在接受cookie数据之前与数据库进行比较

更新:

考虑到您特别关注的是cookies,我将更深入一点。在存储cookies时,有两件主要的事情需要关注

  • 不要存储实际数据
  • 根据数据库进行验证
  • 假设你想要一个有用户的网站来存储个人数据。在cookie中,您可以存储用户名或用户ID以及散列安全令牌,当用户登录时,该令牌也存储在数据库中。安全令牌将不可知,并且将随每次登录而更改。任何个人信息都会保存在数据库中,而不会保存在cookie中

    更多关于最佳实践的阅读:

    如果要防止窃听,可能需要使用,它可以在网络上创建一个安全通道,前提是使用了足够的密码套件,并且服务器证书是安全的

    注意:原来的问题模棱两可。现在很明显,问题在于cookie欺骗。

    您不能“欺骗”HTTP请求。您向服务器发送一个请求,服务器会做出相应的响应

    我认为你试图阻止的是cookie欺骗。考虑到cookie存储在客户端,您无法阻止用户修改其内容

    不要在cookie中存储敏感信息。它们不安全,客户端不容易读取和修改

    改用PHP会话。有关会话如何工作以及如何确保会话安全的完整说明可以在中阅读

    从本质上讲,确保会话安全是在两个方面完成的:

    • 防止会话固定
      每X个请求重新生成一个新的
      会话\u id
      ,以减少攻击者窃取该id的时间

    • 唯一标识客户机
      使用IP和/或用户代理唯一标识客户端,并对照会话中存储的值检查每个页面加载上的值。这实际上是唯一标识客户机的两个选择

    即使这样,也没有一个解决方案是万无一失的,一旦你的
    会话id
    被泄露,你就完蛋了


    同样,有关详细说明,请参见。

    欺骗?身份泄露的唯一真正问题是cookie被盗

    您可以做的是,无论何时通过HTTP头发送cookie,都要根据它发送到的IP地址检查它。例如:

    <?php
    session_start();
    $rec = db_query('select count(*), ip from session where session_id = "' . session_id() . '"');
    
    list ($last_count, $last_ip) = $rec[0];
    
    if (! $last_count) {
        # add it into the database
        db_query('insert into session (session_id, ip) values (' .
            '"' . session_id() . '", ' .
            '"' . $_SERVER['REMOTE_ADDR'] . '"' . 
        ')');
    } else {
        if ($last_ip != $_SERVER['REMOTE_ADDR']) {
            print "user has stolen a cookie!";
        }
    }
    ?>
    

    我知道这已经得到了回答,但我想添加另一种我使用的技术,它对管理登录特别有用。像往常一样使用会话,但在混合中添加目录保护

    这样,如果会话被劫持,劫持者还必须能够获得目录登录

    我使用这种技术来管理论坛。某些论坛很容易被黑客入侵,这降低了黑客进入并引发严重问题的机会


    DC

    如果有帮助的话,我们需要检测欺骗HTTP消息的企图?也许你可以描述一个你认为可能发生的具体例子。如果有人发现PHP用来管理会话的cookie,什么是阻止另一台机器上的人手动将cookie设置为相同的值并假装是你?一旦我们完成了安全检查,就会上传cookieissues@Jermain:然后点击我的答案左边的复选标记,让答案成为您接受的答案。我尚未注册,但一旦注册,我将will@Jermain,您已注册。如果此答案有用,您只需单击答案左侧的绿色复选标记即可。很抱歉,这是一个新问题,只是做了一个简单的评论,关于第2点“唯一标识客户”,这可能会导致问题。有些客户在每次请求时都来自不同的ip,这迫使他们必须不断登录。这是由常见的代理和负载平衡系统造成的。在安全的情况下,我不会信任x-forwarded for和其他头文件,例如user agent。所以我根本不想用第二点这个问题实际上是胡说八道,所以这个答案为一种解释提供了很好的建议。是的,我确实提到过我是个新手,所以考虑到这一点,我开始做一些我不确定这个“建议”有多有用的事情。这不仅能抓住那些拥有动态IP地址的人,还能抓住那些使用移动设备(如笔记本电脑)的人。从一个办公室移动到另一个办公室可能足以让您的代码将它们识别为cookie theive。我不推荐这个。