【问题标题】:secure way to deliver password over URL?通过 URL 传递密码的安全方法?
【发布时间】:2010-07-20 22:20:43
【问题描述】:

我想知道是否有一种安全的方式来提供带有 URL 的密码(例如 ?p=mypassword) 我怎样才能加密和解密这样的密码,所以它是安全的。

我猜 md5 在我的情况下不起作用,因为密码必须仍然可读。这是一个传递到 ftp_connect 的 FTP 密码。我认为 md5 在这种情况下不起作用,因为我必须查询字符串是否与 md5 哈希匹配。但是在我的情况下我不能这样做。

有什么想法吗?

【问题讨论】:

    标签: php encryption passwords


    【解决方案1】:

    Erm:通过 POST 发送 + SSL

    SSL 确保密码在传输过程中不会轻易被第三方读取。通过 POST 发送它只是将变量发送到 URL 之外的服务器,并将其保留在服务器日志之外(希望如此)。这可以很好地将其隐藏在浏览器历史记录或人们嗅探 HTTP 的情况下。

    但是,当使用ftp_connect() 嘲弄HTTP 中的SSL 时,ftp_login() 不会发送此明文吗?确保您之后使用ftp_ssl_connect() 到您的服务器。见ftp_ssl_connect() PHP 手册入口

    【讨论】:

    • 此外,最好确保密码参数不会进入您的网络服务器日志
    【解决方案2】:

    如果您的站点在查询字符串中接受加密密码,则该加密字符串(尽管不可读)在功能上与密码本身没有什么不同。

    如果我进入 CIA 的密码是“password”,但如果我说“5f4dcc3b5aa765d61d8327deb882cf99”,他们就会让我进去,这两个字符串都是我的密码,都需要保护。

    【讨论】:

    • +1,很好的一点是字符串的相等性...尽管 暴力破解者可能不同意这种相等性 ;)
    • 好点,但他似乎主要担心有人在某处截获查询字符串。
    【解决方案3】:

    而不是使用单向哈希(MD5、SHA1)。我认为您需要一个加密解密功能。看看这个http://www.php.net/manual/en/function.mcrypt-encrypt.php

    以上示例,您可以使用密钥进行加密,并在 URL 中传递密码。一旦 PHP 收到密码,您就可以解密密码并使用它来连接 FTP。唯一的限制是密钥必须在 PHP 服务器上以及您生成 URL 的任何位置都可用。字符串的大小也有限制,但我认为您通常会在这些限制范围内。

    【讨论】:

    • 正如用户建议的那样,基于 SSL 的 POST 是最安全/可靠的方法。如果必须使用 GET 请求,请使用 encrypt-decrypt 方法。
    • 我必须安装任何东西还是它带有 php?
    • 这是 PHP 自带的,如果还没有启用,你可能需要启用这个扩展 php.net/manual/en/mcrypt.setup.php
    猜你喜欢
    • 2011-02-16
    • 2023-03-31
    • 2014-12-23
    • 2011-09-13
    • 1970-01-01
    • 2011-02-20
    • 2012-04-06
    • 1970-01-01
    • 2015-11-05
    相关资源
    最近更新 更多