【问题标题】:URL Encryption for IdsID 的 URL 加密
【发布时间】:2014-10-20 09:48:58
【问题描述】:

我想问一些关于加密和安全观点的问题。基本上,我想加密我的 URL 以隐藏 ID。告诉我哪种方法最好?我读过 md5、SHA256、RSA 加密。

我想澄清一件事,您将告诉我的方法应该是 JavaScript 和 php 中的应用程序。

还有一个问题,Facebook、instagram 和 twitter 使用哪种加密方法?请分享一个验证链接,以确认他们的加密方法。

【问题讨论】:

  • url 的唯一限制是使用 A-Z 和数字 0-9 的任何加密,因此其他字符喜欢 : ; , & ~ # @ 是不可接受的。
  • 听起来您将加密与(伪随机)ID 值的生成混淆了……

标签: javascript php security encryption


【解决方案1】:

所以,如果我猜对了,您希望使用 GET 请求将秘密值发送到服务器 - 这些值将作为参数添加到 URL,并且您希望对其进行加密以保护它们。

我不建议这样做。这将(可能)涉及为最终用户提供一个包含您的加密算法的网页。攻击者可以在该页面首次发送给您的最终用户时替换该页面,并对其进行修改以包含他们自己的代码。
如果您坚持这样做,您可以使用任何加密算法(请注意,您提到的 MD5 和 SHA256 不是加密算法,而是加密哈希函数)。您可以使用 RSA,但如果您能找到一种以安全方式交换密钥的方法,则像 AES 这样的对称算法会更快。

您应该做的是使用 TLS 或类似协议隐藏您的通信。通过这种方式,您可以使用几乎每台计算机都有的内置加密技术。
需要秘密通信的值可以通过 POST 请求发送。这还有一个额外的好处,那就是可以更轻松地保护您的系统免受重放攻击。

【讨论】:

    【解决方案2】:

    基本上,我想加密我的 URL 以隐藏 ID。告诉我哪种方法最好?

    人们想在这里做什么

    人们应该做什么


    使用random_bytes()bin2hex()base64_encode() 之一。如果您使用 Base64,请将生成的字节数设为 3 的偶数倍(例如,random_bytes(24) 用于 32 个字符的字符串)。

    你也可以像这样使用URL-safe base64

    <?php
    use ParagonIE\ConstantTime\Base64UrlSafe;
    
    $token = Base64UrlSafe::encode(random_bytes(24));
    

    但加密只是the wrong tool for the job

    【讨论】:

      【解决方案3】:

      这是您提到的加密,用于在 PHP 中将密码保存到数据库时出于安全原因。然后你可以使用这种加密。它将原始文本转换为加密形式。破解加密密码要困难得多。出于安全原因,这是一项重要技术。

      【讨论】:

        猜你喜欢
        • 2011-05-27
        • 1970-01-01
        • 2010-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多