Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Web身份验证-如何安全地将用户名/密码从客户端传输到服务器_Javascript_Security_Authentication_Encryption_Passwords - Fatal编程技术网

Javascript Web身份验证-如何安全地将用户名/密码从客户端传输到服务器

Javascript Web身份验证-如何安全地将用户名/密码从客户端传输到服务器,javascript,security,authentication,encryption,passwords,Javascript,Security,Authentication,Encryption,Passwords,我正在尝试启动一个web应用程序(Java)。用户需要登录到系统才能使用这些功能。因此,该应用程序分为两部分: 1) 用户注册 2) 登录 我关心的是将用户名/密码数据从web浏览器传输到服务器的方法有多安全 登记处 我对这一点非常迷茫,因为我不确定如何将数据从web浏览器安全地发送到服务器 登录 我有以下设置: >-------------------------------------------------------------> [请求令牌]----------------------

我正在尝试启动一个web应用程序(Java)。用户需要登录到系统才能使用这些功能。因此,该应用程序分为两部分:
1) 用户注册
2) 登录
我关心的是将用户名/密码数据从web浏览器传输到服务器的方法有多安全

登记处 我对这一点非常迷茫,因为我不确定如何将数据从web浏览器安全地发送到服务器

登录 我有以下设置:

>------------------------------------------------------------->
[请求令牌]-------------------------------------------------------------

[服务器从数据库查询SHA1(密码)用户名]
[服务器计算expectedSecret=SHA1(令牌+SHA1(密码))]
[服务器将hashedSecret与expectedSecret进行比较]


我想知道的是如何安全地注册用户,以及我的登录是否足够安全。


谢谢

看起来……太复杂了。只要使用SSL,它是行业标准,对银行来说已经足够好了。

当然,它是否“足够安全”只有作为系统所有者才能回答。如果您预期的对手不熟练且没有动机,并且身份验证失败的影响很小,那么它就是。如果您要保护任何有重要价值的东西,那么它可能不是一个足够安全的解决方案

以下是一些这种方法可能容易受到攻击的攻击向量

中间人攻击:

 Client          Eavesdropper            Server
 Requests token-------X----------------------->
 <--------------------X-------------Sends token
 Sends PW hash--------X
                      Relays client hash ------>
                      X<-----------Authenticates
客户端窃听服务器
请求令牌--------X----------------->

昆廷发表文章说,SSL很好,在当今的行业中使用了什么。这是最容易实现的安全方法,但对我来说,它的安全性只有C级或更差。银行应用程序和其他网站根据您试图保护的信息使用更强大的安全方法

例如,StackOverflow.com使用标准POST表单创建用户,并通过SSL保护流量。这对于一个仅仅是社区知识库站点的站点来说已经足够好了。示例帖子:

POST https://stackoverflow.com/users/login-or-signup/validation/track         
HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Accept: */*
X-Requested-With: XMLHttpRequest
Referer: https://stackoverflow.com/users/signup?returnurl=http%3a%2f%2fstackoverflow.com%2fquestions%2f9008997%2fweb-authentication-how-to-securely-transfer-username-password-from-the-client
Accept-Language: en-US
Accept-Encoding: gzip, deflate
Host: stackoverflow.com
Content-Length: 240
Connection: Keep-Alive
Cache-Control: no-cache

isSignup=true&isLogin=false&isPassword=false&isAddLogin=false&hasCaptcha=false&fkey=asd231232s30b71ead6f8af06f93b85c&legalLinksShown=1&displayname=[MyScreeName]&email=[MyEmail]&password=[SOMEPASSWORD]&password2=[SOMEPASSWORD]&submitbutton=Sign

另一方面,银行,像富国银行的应用程序一样,将二进制序列化、私有客户机密钥加密和SSL形式的流量。这有点像“隐晦的安全性”,但它比SSL更好。我的20美分。干杯

你预期的威胁是什么?如果您只担心数据传输时的数据包嗅探,那么请使用SSL并忽略您自己喜欢的任何东西-只需像对待任何web请求一样发送用户/通行证,SSL就会避开嗅探器。HTTPS==HTTP+SSL您的应用程序将从端口80更改为443(如果默认配置),并将使用更多的cpu时间。但实现您自己的握手逻辑也会起作用。是的,从理论上讲,如果在令牌生成中添加一个随机salt,那么您的操作是正确的。我启动应用程序的网站还没有SSL证书。然而,他们正计划获得一个。因此,在他们得到一个之前,我必须使用某种加密/哈希技术将数据传输到服务器。我可以想出登录程序,但不知道如何确保注册过程的安全。我担心的威胁是重播/中间人攻击和嗅探器。没有可信证书,您无法阻止中间人攻击。时期推荐阅读:有关解决方法,请查看aSSL:这些链接非常有用,谢谢