【问题标题】:What exactly is the purpose of a second cookie? [duplicate]第二个cookie的目的到底是什么? [复制]
【发布时间】:2015-03-14 23:32:39
【问题描述】:

我想问一个关于拥有两个 cookie 是否明智的问题。在一个 PHP 文件中,可以找到以下代码:

    //dbconn establishes connection to database and is not shown here
    $salt = hash("sha512", rand().rand().rand());
    mysqli_query($dbconn, "INSERT into `members` (`membername`, `password`,
                 `salt`) VALUES ('$membername', '$password', '$salt')");
    setcookie("cookiemember", hash("sha512", $membername, 
              time() + 24*60*60, "/");
    setcookie("cookiesalt", $salt, time() + 24*60*60, "/");
    mysqli_close($dbconn)

在第二个 PHP 文件中,找到以下代码行:

     if (isset($_COOKIE['cookiemember']) &&
         isset($_COOKIE['cookiesalt'])) {
         $cookymem = mysqli_real_escape_string($dbconn,   
            $_COOKIE['cookiemember']);
         $cookysalty = mysqli_real_escape_string($dbconn,   
            $_COOKIE['cookiesalt']);
         $result = mysqli_query($dbconn, "SELECT * FROM `members` 
            where `salt` = '$cookysalty'");

我不明白变量 $salt 的用途。您取三个随机生成的数字,将它们连接起来,对这个连接的数字应用安全哈希算法,然后将输出放入名为members 的表中。然后,您使用这个 $salt 变量作为 cookie 的值,但不是在您从其中转义特殊字符之前。当您已经通过散列加密字段名称membername 时,为什么还要经历所有这些麻烦?为什么最后一行代码不能简单阅读:

         $result = mysqli_query($dbconn, "SELECT * FROM `members` 
            where `membername` = '$cookymem'");

【问题讨论】:

  • 弗拉基米尔,感谢您的链接。该链接确实包含一个名为“近似线性”的用户的非常有用的答案。
  • 我不太确定这是一个重复的问题。对我来说,这看起来像是变量命名错误的情况。 $cookiysalty 可能不包含 SALT,但包含加盐密码。 Ofc 如果不阅读更多代码,这很难说。该代码还拼错了 cookie,并在应该使用 member 的地方使用了“mem”,这样人们就不必猜测变量内部的内容了。
  • 同意,这不是重复的。除非缺少代码,否则使用一个称为盐的变量,但根本没有盐的实现

标签: php cookies


【解决方案1】:

有包含编码单词列表的大型数据库。例如this site。 SALTs 是为了使它不可能简单地输入 HASH 到文本框中,并希望它被解码。当然有变通办法,但是 SALTS 使攻击者的工作变得更加困难,可能迫使他不使用它。正如 Vladimir 在 cmets 中指定的那样,请阅读 this 以便您了解 SALT 是什么。

【讨论】:

  • 感谢您提供指向 SHA2 解密器网页的链接。试一试,看看它是否真的反转加密输入可能会很有用。
  • 我用 MD 5 试了一下,实际上发现了很多密码。我使用了不同的网站。
  • 只是关于您提供链接的网站的更新:sha512.blogspot.cz。当您加密输入并获得输出,然后立即将该输出放入解密器时,您确实会取回原始输入。但是,如果您使用任何其他在线 SHA512 对您的输入进行加密,然后将加密的字符串复制到 sha512.blogspot.cz 的解密器中,您将看到一个空白。换句话说,我认为这个网站是伪造的,并且只能通过“记住”输入加密器的文本来解密在其自己的加密器上加密的文本。那是作弊。
  • 这是可能的。我正在使用不同的网站,这对我来说是合法的。然而......再次......我正在解密 MD5 哈希(想证明我的朋友错了,他的数据库不安全)。为此,我使用了http://www.md5online.org/http://www.hashkiller.co.uk/md5-decrypter.aspx。我相信第二个网站也解密了 SHA,但我不确定。很抱歉我提供了错误的示例网站,这是我在谷歌上搜索出来的第一件事。
猜你喜欢
  • 2021-03-24
  • 1970-01-01
  • 2015-11-30
  • 2013-03-29
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
相关资源
最近更新 更多