【问题标题】:Need to "rip" part of this string and place it in a variable, how?需要“撕掉”这个字符串的一部分并将其放在一个变量中,如何?
【发布时间】:2010-11-06 22:49:27
【问题描述】:

我创建了一个字符串并将其放在一个 cookie 中,如下所示:

$cookie_value = $salt1.':'.$username.':'.sha1($row['alt_username']);
//THEN INSERT INTO COOKIE

然后我像这样获取 cookie 数据:

$data = $_COOKIE['cookie_name'];

我需要从 cookie 中的数据中取出 $username。我该怎么做?

如您所见,用户名被冒号包围。

谢谢

【问题讨论】:

  • 请提供 $cookie_value 的示例值。
  • 我没有标准的示例值。如您所见,sha1 和 salt 可以是我相信的任何东西。至少我是这么认为的。但是,如果您愿意,我可以更改模式,但它必须保持安全!
  • 如果盐真的是任何东西,那么当它包含“:”时,你会遇到一个严重的问题。
  • 盐不应该是某种秘密,并且将其发送到那里会破坏目的..要么这样,要么我即将遇到危机。

标签: php html regex cookies


【解决方案1】:

像这样:

list($salt, $username, $hash) = explode(':', $data);

如果不需要,您也可以删除 $salt$hash 并将其简化为:

list(,$username) = explode(':', $data);

【讨论】:

  • SHA1 也可以包含冒号吗?那这一切都会搞砸的。
  • SHA1 只包含字母和数字,即使它包含冒号也没关系,因为它出现在用户名之后。另一方面,如果$salt 包含一个冒号,那么你就不走运了。
  • 他需要在连接时转义冒号,并在正则表达式中考虑到这一点或爆炸。
【解决方案2】:

SHA1 生成 160 位的固定大小的消息摘要。使用该信息,您可以从末尾剥离散列,然后很容易找到用户名(假设它不包含任何冒号)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 2020-08-26
    相关资源
    最近更新 更多