如何在没有javascript的情况下在Web表单中编码密码?

sde*_*sse 5 javascript security encryption cryptography

当然,并不是说我无法访问javascript.在我的大多数CS Web开发课程中,我们都会学习一些关于服务器端验证的知识,然后一旦引入了javascript,服务器端验证就会被抛到窗外.

我选择不仅仅依赖于javascript,因为客户端从来都不是一个安全的地方.我已养成为这些事情编写客户端和服务器端代码的习惯.但是,对于我正在编写的具有可选AJAX的Web应用程序,如果有人关闭了javascript,我不希望密码通过网络发送明文.

我意识到我可能会问一个捕获22的情况,所以让我问一下:当我们可以依赖的是服务器端时,我们怎么知道我们用户的密码对同一网络上的恶意用户来说是安全的(足够的)脚本.在登录页面的第一个请求上,有没有办法让浏览器加密数据字段?

roo*_*ook 5

SSL解决了这个问题.为了记录,密码不应该被"加密"或"编码",这采用了"解码"或"解密"的方法,如果CWE-257,这是明显的违规.密码必须经过哈希处理,SHA-256是一个很好的选择,但这不是用于传输,而是用于存储.当你传递秘密时,有很多可能出错的事情,SSL是解决这些问题的最佳选择.

如果攻击者可以嗅探流量,那么他们将能够看到会话ID并立即使用它,因此它没有实际意义.无论如何,您必须使用SSL来保护经过身份验证的会话.