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 在没有HTTPS(不发送密码)的情况下,向服务器进行安全身份验证的质询/响应方法是什么?_Javascript_Security_Authentication - Fatal编程技术网

Javascript 在没有HTTPS(不发送密码)的情况下,向服务器进行安全身份验证的质询/响应方法是什么?

Javascript 在没有HTTPS(不发送密码)的情况下,向服务器进行安全身份验证的质询/响应方法是什么?,javascript,security,authentication,Javascript,Security,Authentication,在没有HTTPS(不发送密码)的情况下,向服务器进行安全身份验证的质询/响应方法是什么? 我有一个应用程序(Javascript客户端),它通过CORS(身份验证)连接到我们的后端,后端将通过非HTTPS返回一个包含声明(JWT)的令牌。其余的是无状态的,所以我们基于令牌,根本没有会话 当客户端获得该令牌(包含声明)时,它将被添加到客户端每个请求的头中,因此后端知道哪个用户Id正在执行该请求并执行相应的操作。到目前为止,这对我们有效。我关心的是身份验证过程和每个请求的安全性 为了验证客户端发送的

在没有HTTPS(不发送密码)的情况下,向服务器进行安全身份验证的质询/响应方法是什么?

我有一个应用程序(Javascript客户端),它通过CORS(身份验证)连接到我们的后端,后端将通过非HTTPS返回一个包含声明(JWT)的令牌。其余的是无状态的,所以我们基于令牌,根本没有会话

当客户端获得该令牌(包含声明)时,它将被添加到客户端每个请求的头中,因此后端知道哪个用户Id正在执行该请求并执行相应的操作。到目前为止,这对我们有效。我关心的是身份验证过程和每个请求的安全性

为了验证客户端发送的电子邮件和散列密码对,我想知道是否有一种更安全的方法,即使现在不使用HTTPS。我读过,不发送密码,而是进行质询/响应,但这一想法的实现是什么


最后一个问题是,即使我们安全地处理身份验证过程,对于每个包含带有声明的令牌的请求,它是否也能得到安全保护?没有HTTPS,也无法安全地执行此操作。为了让服务器对用户进行身份验证,您需要某种令牌(cookie、添加到像您这样的请求中,等等)。然而,问题是,如果没有https,窃听者可以向您的页面添加javascript。然后他们可以捕获令牌并自己使用(窃取用户的所有数据),或者修改它。如果您希望您的产品以任何方式安全,您需要HTTPS


编辑:我想您可以存储一些关于发送请求的设备的信息(用户代理等),并且只允许在该设备上使用令牌。但是,攻击者在重用令牌时可能只是伪造用户代理,因此这并不难绕过。

质询响应是一种以不明确方式发送密码的机制

1°/客户端和服务器必须共享加密密钥:最好是在客户端上手动添加证书,但可能有点重。另一种解决方案是只将密钥存储一次到localStorage中

2°/客户端向服务器请求质询:这是服务器生成的“短语”

3°/客户端使用此“密码短语”加密其密码,并将响应发送到服务器:Challenge=>response


4°/服务器解密邮件,搜索并删除其密码短语以获取密码。

如果不使用HTTPS,则没有任何东西是安全的。在任何情况下,您都可能希望将其提交给信息安全stackexchange。您必须查看哪个解决方案解决了哪个问题。HTTPS解决了窃听问题,质询响应解决了重播攻击问题。你可能两者都想要。我喜欢这样想:假设你在一家咖啡店使用wifi,有人能窃取你的会话或以你的名义执行操作吗?你的令牌系统听起来非常像非RESTful状态。仅仅因为您将会话id更改为请求头,并不能使其更加RESTful。REST是静态的,没有动态令牌,没有会话。你说的“REST是静态的,没有动态令牌,没有会话”是什么意思@Halcyon?你是说我们应该储存代币吗?如果是这样,设计专家建议不要存储令牌。不完全是这样,我认为您在(2°-4°)中试图描述的是挑战握手身份验证协议()。