【问题标题】:Encrypt IDs in URL variables加密 URL 变量中的 ID
【发布时间】:2011-05-27 17:23:59
【问题描述】:

我正在开发一个 HTTP 服务器应用程序(在 PHP 中就是这样)。我担心出现在 URL 中的表 ID。是否可以加密 URL 变量和值以保护我的应用程序?

【问题讨论】:

  • @deceze:我如此很想简单地回答“是”。但我认为快乐的时刻可能不值得不可避免的(和合理的)重复打击......啊,我的懦弱......
  • 只是想知道如何加密任何被扔进 url 的变量。
  • 这很好,但您必须牢记一个用例。通常加密 URL 变量是不必要的,并且会错过您实际尝试实现的目标。
  • 哦,好吧,那么对于敏感信息最好使用会话,表 ID 等可以安全地放入 GET var 中吗?
  • 加密要求发送者和接收者就使用的加密密钥达成一致。 Web 浏览器和 PHP 服务器如何做到这一点?如果这样做的方法不安全,那么您将一无所获。

标签: http url encryption


【解决方案1】:

哦,好的,那么对于敏感信息最好使用会话,表 ID 等可以安全地放入 GET var 中吗?

是的,敏感信息首先不能离开您的服务器。使用会话。

至于“URL 中的表格 ID 是否安全”:我不知道,用户知道表格 ID 会有什么不好的事情可以吗?如果是这样,你需要解决这个问题。通常你需要传递 some 类型的 id,不管是“native table id”还是你想象的其他随机 id 都无关紧要。在 URL 中显示记录的 id 本身并没有什么不安全的地方,这本身绝对没有任何意义。您的应用程序使用此 ID 的方式可能会或可能不会打开安全漏洞。
此外,请考虑用户是否可以轻松猜出他不应该知道的其他 ID,以及这是否意味着对您的安全不利。

安全性不是一次性的,您需要在编写的每一行代码中都考虑到它。

【讨论】:

    【解决方案2】:

    听起来您想将敏感信息作为 GET 参数传递。

    不要这样做 - 如果可以,请使用 $_SESSION

    但是,如果您希望对参数进行编码(即 => +),请使用 urlencode()

    $a = 'how are you?';
    
    echo urlencode($a); // how+are+you%3F
    

    【讨论】:

      【解决方案3】:

      您可以在传输之前对传递的内容进行加密,也可以通过加密通道(例如 https 或 ssh)运行整个通信。

      【讨论】:

      • 使用 SSL 有一些小问题,因为它是一个 GET 参数,用户可以看到它——这可能不是我们想要的。也就是说,这是一个非常容易实施的解决方案,可以解决 95% 的使用场景
      【解决方案4】:

      您的 GET 变量可以根据您选择的任何名称进行调用,并分配您选择赋予它们的任何值。所以,是的:它们当然可以被加密,或者,如果你愿意,可以简单地隐藏起来。如果你打算encrypt variables, then PHP has quite a few options available.

      对于上述情况,我建议使用 urlencode 之类的内容。

      一般来说,我建议使用 POST 而不是 GET,假设您从表单元素中获取变量。另一方面,使用会话变量可能更明智。

      【讨论】:

        【解决方案5】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-28
        • 1970-01-01
        • 2012-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多