将 POST 或 GET 请求中的密码/用户名传递到外部服务器有多安全?
我将使用 PHP / CURL,并且我对安全性有第二个要求。
替代品也将被考虑!
如果您使用没有 SSL 加密的 HTTP,则所有内容都以明文形式传输,包括完整的 URL、HTTP 请求/响应标头以及 POST 请求和响应的正文。
如果您在 GET 参数中输入密码,它还会显示在地址栏中,并且很可能会保存在浏览器历史记录、代理服务器日志中,并在引荐来源网址中发送到其他网站。在 POST 正文或标准Authorization标头中发送密码可以避免这个明显的问题,但是对于可以嗅探或代理您的流量的观察者来说,它仍然是可见的。
摘要式身份验证避免以明文形式传输密码,并且仅将不可重用的签名暴露给外部观察者。它仍然容易受到中间人攻击;请参阅HTTP 摘要式身份验证与 SSL。
正确的解决方案是使用 SSL 证书并专门使用 HTTPS。当您这样做时,URL 字符串、HTTP 标头和 POST 正文都将被加密,并且浏览器会验证中间没有第三方在操作服务器。在这种情况下,HTTP 基本身份验证是允许的。
自己,不一定。除了查询之外,您不应该将 GET 用于其他事情,因为它们可以存储在用户的浏览器中。POST 使用库加密相对容易,因为您不应该实现自己的加密。
此外,如果您获得 SSL,那将有所帮助。如果您使用 HTTPS(而不是 HTTP),那么它将更加安全。
你没有提供关于页面是什么的详细信息(阅读:语言),所以我不能真正推荐一个好的加密库,但只要谷歌它,我相信你会找到一些东西。