Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我确保会话安全的方法是安全的吗?_Php_Security_Session_Encryption - Fatal编程技术网

Php 我确保会话安全的方法是安全的吗?

Php 我确保会话安全的方法是安全的吗?,php,security,session,encryption,Php,Security,Session,Encryption,我非常关注安全性,我正在努力保护我的$u会话。我想听听你的建议 当用户创建帐户时,我在数据库中的配置文件中生成11111-99999之间的随机值 当用户登录时,我创建了一个包含大多数用户数据(没有密码或任何关键信息)的会话。在$\u会话中,我还添加了我在步骤1中创建的随机数的加密版本,并且我还创建了一个$\u COOKIE,该COOKIE具有相同的加密数,我将使用该加密数检查会话是否有效 在我的应用程序上,当我收到一个请求时,我检查$u会话是否存在实际上它应该存在,但为了防止黑客攻击(猜测或攻击

我非常关注安全性,我正在努力保护我的$u会话。我想听听你的建议

  • 当用户创建帐户时,我在数据库中的配置文件中生成11111-99999之间的随机值

  • 当用户登录时,我创建了一个包含大多数用户数据(没有密码或任何关键信息)的会话。在$\u会话中,我还添加了我在步骤1中创建的随机数的加密版本,并且我还创建了一个$\u COOKIE,该COOKIE具有相同的加密数,我将使用该加密数检查会话是否有效

  • 在我的应用程序上,当我收到一个请求时,我检查$u会话是否存在实际上它应该存在,但为了防止黑客攻击(猜测或攻击)其他人的会话id,我将$u COOKIE中密钥的加密值与$u会话中的密钥的加密值进行比较

  • 主要的问题是,这种方法有多安全?我看不出黑客有什么办法可以窃取$\u会话id和加密密钥

    密钥的加密是由位于服务器上的加密值生成的,而不是用简单的md5生成的,在我看来,md5很容易复制。因为黑客不知道我用来加密那个密钥的加密值

    最后,当用户在服务器上发送请求时,看起来是这样的(我简化了代码)


    没有必要这样做。PHP已经为您处理了会话验证。启动会话时,将在客户端创建cookie,在服务器端创建文件。Cookie包含服务器端的文件名。只要cookie存在于浏览器中或会话被销毁,会话就会持续

    另见:

    在我的申请中,当我收到请求时,我会检查 $\会话存在实际上它应该存在,但为了防止黑客( 猜测或破解)其他人会话id我比较encryped值 来自$\u COOKIE的密钥的

    至于开始,您可以
    会话\u重新生成\u id(true)使攻击者更难劫持您的会话id

    有关会话安全性的一些阅读资料:


    确保cookie过期,并在注销时删除cookie

    最重要的是,确保会话过期。 否则,有人可以窃取cookie并在以后从另一台机器继续(仍处于活动状态)会话


    我还将在加密中包括用户IP和使会话唯一的任何其他数据。

    总体思路对我来说很好(我不是专家)

    需要考虑的事项: 当cookie不存在时会发生什么

    另一种生成基值的方法是稍后以某种方式“散列”,最推荐的方法可能是
    mcrypt\u create\u iv()

    你提到的时间间隔(11111-99999)太窄(计算时间);当然,如果你不想喜欢它,它有很好的随机数API(不仅仅是伪随机)

    “我看不出一个黑客如何既能窃取某人的$\u会话id,又能同时知道加密密钥”——为什么不呢?您正在将会话id和随机值存储在cookie中–因此,如果攻击者能够访问其中一个,为什么他们不能同时访问另一个?//你的问题看起来像是这方面的新手——在这种情况下,我认为最好使用PHP会话机制,当然,我的目标是保护我的应用程序。不幸的是,我知道我无法保护用户计算机免受黑客攻击,但我主要想防止的是(会话id猜测)然后,即使我认为如果你在浏览器中加入会话id,你也需要加入与该用户对应的加密密钥。因此,攻击者现在不需要猜测一个值,而需要猜测两个值。本质上,您只是增加了更多的熵,这意味着攻击者必须猜测更长的值。您只需生成一个较长的会话id即可实现这一点,它具有相同的效果。我理解您的观点。但让我们解释一下我的自我提升每个用户都有自己的随机数示例我有84882,然后在$U会话上,该数字被加密,看起来像这个DSLKJEDFKSJDFLERKJLDFLKSLKDFF,然后我认为如果你访问会话id,你就不可能得到每个用户都唯一的完全相同的加密密钥。最后,这不是一个较长的sting给guest,而是一个要猜测的长字符串和一个仅与$_会话相关的长sting['key'],谢谢,我已经读过了,但我想100%防止的是会话id猜测可能性如果cookie不存在,我的系统不会让用户进入
    if(isset($_SESSION['key'])){
       if($_SESSION['key'] == $_COOKIE['key']){
          // do stuff here
       }
       else {
         die();
       }
    }
    else {
       die();
    }