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
Java 在POST请求中输入密码是否安全?_Java_Security_Rest - Fatal编程技术网

Java 在POST请求中输入密码是否安全?

Java 在POST请求中输入密码是否安全?,java,security,rest,Java,Security,Rest,我正在开发web服务 这些服务是rest服务,由移动应用程序使用 例如,如果用户想要登录,他/她必须调用此链接 mySever:myPort/login 在请求的帖子中,他们使用自己的密码和用户名 这条路安全吗 请注意,在调用web服务之前,我将密码更改为sha256 如果这种方式不安全,您可以建议其他选项吗?仅当您通过SSL进行所有通信时。由于您没有使用SSL,您应该使用一些方法来避免重播攻击。如果你只是对密码本身进行散列,那么有人可以很容易地捕获散列并自己发送。实现这一点的一种方法是使用发送

我正在开发web服务

这些服务是rest服务,由移动应用程序使用

例如,如果用户想要登录,他/她必须调用此链接

mySever:myPort/login

在请求的帖子中,他们使用自己的密码和用户名

这条路安全吗

请注意,在调用web服务之前,我将密码更改为sha256
如果这种方式不安全,您可以建议其他选项吗?

仅当您通过SSL进行所有通信时。

由于您没有使用SSL,您应该使用一些方法来避免重播攻击。如果你只是对密码本身进行散列,那么有人可以很容易地捕获散列并自己发送。实现这一点的一种方法是使用发送给用户的nonce,并在散列之前将其添加到密码中。这个nonce应该是唯一的,例如,您可以使用时间戳

因此,您可以使用hashpassword+nonce代替hashpassword。然后您将进行比较,因为您都持有密码和nonce。

使用HTTPS! 如果您使用HTTP并确保验证服务器证书,您将相当安全

如果您制定了自己的身份验证协议,则很可能会产生漏洞


如果您只是发送一个密码散列,那么您没有添加任何安全性;攻击者可以重播相同的散列。

亲爱的Tim先生,你是说https吗?很遗憾,它不在https上,你能建议其他选项来保护我的服务器吗?@user3110137:你需要使用https。安全是硬的;如果您尝试创建自己的SSL版本,您将失败。特别是,您必须验证服务器证书。对于您的初始测试和类似的测试,您不需要支付任何费用-使用自签名证书,并且您只需要在站点准备就绪时购买一个。@TimB如果我必须使用ssl,那么我应该使用公钥和私钥,这些密钥可以通过金钱获得吗?或者我可以使用自己的密钥?大多数登录表单都在这样做。这个过程本身并不是不安全的,但是如果任何人在公共wi-fi热点上嗅探网络,这显然很容易,而你在没有加密SSL的情况下发布你的数据,这可能会暴露出来,因为其他类似cookie(包括会话cookie)的东西可能会像拥有密码一样有害。。。因此,关键是使用SSL,而不是散列密码…因此,我可以使用我自己的公钥和私钥,我可以从VS生成,或者从受信任的站点购买它们很重要?@user3110137:如果您生成自己的密钥对,您可以直接将公钥嵌入客户端应用程序,而不是使用PKI。但是,如果有人偷了钥匙,您将无法撤销它。