24

SSL 是否足够安全以在查询字符串中使用敏感数据(如密码)?是否有任何额外的选项可以实施?

4

10 回答 10

49

SSL 提供安全的传输级安全性。客户端和服务器之间的任何人都应该能够读取信息。

但是您应该改变主意,不要在查询字符串中写入敏感数据。它将显示在浏览器的历史记录中,并且在浏览器的地址栏中和服务器上的日志中可见。请参阅本文:通过 HTTPS 查询字符串的安全性如何?

如果使用查询字符串是您唯一的选择(我对此表示怀疑),这里有一篇关于保护查询字符串的有趣文章。

于 2008-10-10T10:51:14.563 回答
5

SSL 是安全的,但请记住,如果有足够的时间和资源,任何加密都可能被破解。鉴于您不知道哪些数据包包含密码,哪些不包含密码,您必须解密所有加密流量才能找到正确的数据包。这在一般情况下是棘手的。

但是,登录表单需要一个 input[type=text] 才能输入。需要工作才能“解包”它并使用查询字符串将请求转换为 HTTP GET 请求,而不是使用表单参数中的数据进行 POST。我无法想象为什么有人会这样做。一旦用户提供了密码(并且用户已通过身份验证),请使用身份验证这一事实,而不是保留密码。如果您需要保留密码以进行模拟,例如,请将其保留在服务器端,最好保存在安全字符串中。如果您尝试进行单点登录(为许多站点输入我的 id/密码一次),则使用某种中央身份验证服务 (CAS) - OpenID、WindowsLive - 或实施您自己的。

密码通过网络的次数越少越好。

而且,总是要考虑浏览器位置栏,它会认为您需要对您放入查询字符串中的任何敏感数据进行加密和编码,如前所述。

于 2008-10-10T11:04:29.683 回答
2

查询字符串中的敏感数据是个坏主意,不经意的路人可以看到查询字符串,并且会很想加入书签,这确实不安全。

SSL 非常安全,如果您使用网上银行并且您信任它,那么 SSL 对您来说也足够了。

于 2008-10-10T10:47:26.253 回答
2

同意 SSL 是安全的 *ish 和查询字符串问题

请记住,SSL 存在限制 -

确保证书是根认证的。

一些 Windows 2000 机器需要申请 128 位 ssl 的 sp 才能工作,如果它不存在,那么它会转到 40 位或不加载(如果我没记错的话)

一些软件防火墙,比如 ISA——你在其中发布安全站点和证书——就像中间人一样。

安全到 ISA,然后安全到 LAN。但这里的重要因素是“然后”,因为 ISA 将记录然后记录是一个问题,因为可以看到查询字符串和帖子上的密码 - 这意味着任何人(管理员)都可以看到......

因此,请使用您的语言寻找安全散列算法来简单地散列密码。

于 2008-10-10T10:53:18.647 回答
2

没有“足够安全”,安全性不是一个静态的东西,它的布尔属性要么为假要么为真。

SSL 很好,但这取决于服务器端的私钥有多安全、密钥有多少位、使用的算法、使用的证书的可信度等......

但是,如果您使用 SSL,至少您传输的所有数据都是加密的(目标 IP 除外,因为它用于路由您的包裹)。

您应该考虑的另一点是 - 如果您在浏览器中手动输入密码查询字符串,它可能最终会出现在您的本地浏览器缓存中(在一个完全未加密的本地文件中)。所以最好使用 POST 而不是 GET 传输机制。

如果您真的对安全性感兴趣,我建议您对该主题进行更多研究,因为通常算法不是安全性的最薄弱环节。

于 2008-10-10T10:59:54.467 回答
1

是的,它足够安全。虽然我同意在查询字符串中包含诸如此类的内容通常不是一个好主意,但如果它不是将显示在地址栏中的查询字符串,则可以。如果它显示在地址栏中,您会因为明显的原因失去一定程度的安全性(路过的人等)

于 2008-10-10T10:46:00.283 回答
1

ssl 检查器可以打开 ssl 流量 http://www.ssl-inspector.com/files/file/SSL%20Inspector%20Appliance%20Product%20Brief%20(2-11).pdf

于 2011-07-23T08:41:37.693 回答
0

你永远不应该使用查询字符串发送任何非常敏感的东西!

于 2008-10-10T10:44:06.870 回答
0

不应该发送散列密码吗?- 没关系,如果我错了。

SSL 几乎是您可以获得的最高安全性。

于 2008-10-10T10:46:38.987 回答
0

自签名证书是由您自己创建和签名的 SSL 证书。这意味着您不需要第三方证书颁发机构 (CA) 来签署您的证书,但这意味着浏览器默认情况下会发出警告,因为自签名证书不能可靠(您的浏览器有一个列表受信任的 CA)验证证书的签名者是否正是证书所说的。

考虑一下您“代表”某个基于 Redmond 的软件公司创建 SSL 证书的情况。现在,如果您的 HTTP 服务器将您自签名的证书提供给客户端,用户代理将警告该证书实际上可能不是它所说的那个证书。证书颁发机构将验证 - 通过文书工作,真实的,实际的死树类型 - 请求签名的一方的身份,因此它是可信赖的。

希望这可以帮助。

于 2009-03-13T11:10:53.797 回答