当前位置:  开发笔记 > 编程语言 > 正文

通过HTTP发送Web表单身份验证数据的最佳方法是什么?

如何解决《通过HTTP发送Web表单身份验证数据的最佳方法是什么?》经验,为你挑选了2个好方法。

我所知道的一家公司正在讨论如何在其所有Web应用程序产品中确定其密码安全策略.

现在,他们通过HTTP在POST表单中发送用户名/密码身份验证,因此,他们正在发送纯文本.

解决这个问题最简单的方法就是要求HTTPS在所有应用程序中登录,对吧?

好吧,有一些内部讨论,而不是做一些自己的客户端密码加密(密码+盐等).

是否有可接受的仅HTTP解决方案?

意见就像......好吧,每个人都有意见,所以我正在寻找可以支持你的建议的可靠安全文献.不要只是google并将我发送到博客文章......我已经做到了这一点.

我找到了OWASP的建议:http: //www.owasp.org/index.php/Top_10_2007-A7#Protection

以及微软的:http: //msdn.microsoft.com/en-us/library/aa302420.aspx

编辑:提供使用SSL的建议是不够​​的.我需要某种支持文档.我知道滚动我们自己的客户端加密是不好的.我需要能够可靠地将其出售给同事和管理层.

此外,还提到了HTTP Digest.看起来不错,但Digest仅用于HTTP身份验证,而不适用于通过POST发送的数据.



1> Mehrdad Afsh..:

我强烈建议您不要使用自己的解决方案(在安全敏感的环境中).使用SSL.它是一种经过验证的技术,易于实施.

滚动您自己的安全解决方案可能非常危险,即使它正确实施(0.000001%几率),也会很昂贵.



2> Keith Gaugha..:

如果数据本身不是太敏感,但密码是,我建议使用HTTP摘要身份验证(这与HTTP基本身份验证完全不同).它比直接HTTP更安全,并且在服务器上实现起来并不困难.没有任何内容通过网络发送,可以揭示密码是什么,只是允许客户端向服务器证明他们有正确密码的信息.

如果您想要在应用程序中如何实现HTTP摘要身份验证,Paul James有一篇很好的文章.

HTTP身份验证的唯一真正问题在于浏览器本身:UI很糟糕,但可以通过一些Javascript来克服.

您可以通过存储A1哈希来安全地存储密码.

更新:正如其他答案所述,虽然服务器可以通过不接受基本身份验证来避免MITM攻击,但客户端仍然容易受到攻击,因为它会.

更新:您无法通过POST保护数据,除非您(a)在客户端上使用JavaScript进行加密,或者(b)通过SSL执行所有操作.

可以通过一些魔术将HTTP身份验证与表单一起使用.毕竟,我上面链接的文章称为"带有HTML表单的HTTP Auth".但这不会通过POST完成.

如果你真的需要它,请使用POST,使用SSL并在数据库中加密密码.

如果你想避免使用CSRF,我建议使用formkeys,虽然这个想法有很多不同的名字,但是几年前我从黑客Slashcode中获取了这个名字供我自己使用,这是我第一次遇到它的地方.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有