2013-07-09 56 views
0

将POST或GET请求中的密码/用户名传递给外部服务器有多安全?GET/POST参数是否加密?

我将使用PHP/CURL,并对安全性有第二个限制。

替代品将被视为!

+2

您使用HTTP还是HTTPS? –

+1

GET请求未加密,绝不通过GET参数发送密码。 – c69

+0

@ c69会有什么选择? – ProDraz

回答

9

如果您使用未经SSL加密的HTTP,则所有内容都将以明文传输,其中包括完整URL,HTTP请求/响应标头以及POST请求和响应的正文。

如果您在GET参数中放置密码,它将另外显示在地址栏中,很可能保存在浏览器历史记录,代理服务器日志中,并发送到其他网站的引用标头中。在POST主体或标准Authorization标题中发送密码可以避免这个明显问题,但对于可以嗅探或代理您的流量的观察者来说,它仍然是可见的。

Digest Authentication避免以明文传送密码,并且只有不可重复使用的签名才会暴露给外部观察者。它仍然容易受到中间人攻击;见HTTP Digest Authentication versus SSL

正确的解决方案是使用SSL证书并专门使用HTTPS。当你这样做的时候,URL字符串,HTTP标题和POST主体都被加密,并且浏览器验证没有第三方在中间运行服务器。在这种情况下,HTTP基本认证是允许的。

0

由他们自己,不一定。除了查询之外,不应该使用GET,因为它们可以存储在用户的浏览器中。使用库进行POST加密相对容易,因为您不应该实施自己的加密。

此外,如果您获得SSL,这将有所帮助。如果您使用HTTPS(而不是HTTP),那么它会更安全。

你没有给出关于页面是什么的细节(阅读:语言),所以我不能真正推荐一个好的加密库,但只是谷歌它,我相信你会找到一些东西。

+1

** GET更糟糕**它被搜索引擎抓取:) – CodeAngry

0

如果你不使用https,那么它在技术上是不安全的。如果有人在嗅探您的流量(例如,如果您使用公共WiFi),他们可能会看到数据。您不应该使用GET发送密码。

没有https我通常会说它是安全的,但它取决于许多其他因素。没有保证。