【问题标题】:Generate x-mod-nonce in php在 php 中生成 x-mod-nonce
【发布时间】:2020-02-23 16:50:41
【问题描述】:

根据我目前正在查看的一些文档,我需要将带有标签 x-mod-nonce 的标头设置为每个请求的唯一值 示例标题:

x-mod-nonce: 28154b2-9c62b93cc22a-24c9e2-5536d7d

我想用 uniqid 函数确实得到了这种类型的值,但我觉得我不太明白。

有人可以提示我如何做的一些例子或让我自己做吗?

【问题讨论】:

    标签: php nonce


    【解决方案1】:

    我需要将带有标签 x-mod-nonce 的标头设置为每个请求的唯一值,并带有示例标头

    • 使用random_bytes() 之类的内容生成您的唯一值 字符串
    • 将其连接到您的标题字符串
    • 用header()设置你的标题

      <?php $unique_value = bin2hex(random_bytes(10)); header("x-mod-nonce: " . $unique_value);

    您还可以设置一个与问题中提到的模式相似的字符串,如下所示:

    $pattern = bin2hex(random_bytes(10)) . "-" . bin2hex(random_bytes(10)) . "-" . bin2hex(random_bytes(10)) . "-" . bin2hex(random_bytes(10))
    

    【讨论】:

    • 谢谢@LucasMeine。 uniqid() 的格式是否需要像我上面定义的文档示例中那样,如果需要,如何用这个函数编写它?
    • 如果生成的令牌是为了安全(通常是随机数),则使用random_bytes() 而不是uniqid()(不是加密安全的)
    • 好建议,我会将其添加到我的答案中@MagnusEriksson
    • @Johnn 我真的不知道您使用的是什么文档,所以我无法真正回答这个问题 =/ 但试试吧!看看它是否有效:D
    • 我会删除对uniqid() 的任何引用,因为在这种情况下使用它不是一个好的功能。您还需要将 random_bytes() 的结果转换为 ascii 字符。可以通过使用bin2hex() 将其转换为十六进制来完成,如下所示:bin2hex(random_bytes(16)) 其中16 是您想要返回的字节数。
    猜你喜欢
    • 2016-03-29
    • 2017-06-02
    • 2019-08-24
    • 2011-07-12
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2023-02-08
    • 2013-04-18
    相关资源
    最近更新 更多