Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
纯文本密码和";“记住我”;,node.js和js客户端_Node.js_Security_Passport.js_Password Protection - Fatal编程技术网

纯文本密码和";“记住我”;,node.js和js客户端

纯文本密码和";“记住我”;,node.js和js客户端,node.js,security,passport.js,password-protection,Node.js,Security,Passport.js,Password Protection,我试图了解node.js(带有passport.js)和client(纯javascript)web应用程序中的更多安全性。但我对网络编程非常陌生 我已经实现了一个LocalStrategy,它还可以。要访问某些api,我必须以普通帐户登录,或者以管理员身份登录其他帐户 我正在使用浏览器身份验证进行测试(仍然没有“记住我”功能,因此每次我都必须重新键入密码),我正在使用curl进行测试: curl --cookie-jar jarfile --data "username=admin&p

我试图了解node.js(带有passport.js)和client(纯javascript)web应用程序中的更多安全性。但我对网络编程非常陌生

我已经实现了一个
LocalStrategy
,它还可以。要访问某些api,我必须以普通帐户登录,或者以管理员身份登录其他帐户

我正在使用浏览器身份验证进行测试(仍然没有“记住我”功能,因此每次我都必须重新键入密码),我正在使用curl进行测试:

curl --cookie-jar jarfile --data "username=admin&password=pass" http://localhost:5000/login
curl --cookie jarfile "http://localhost:5000/api/admin"
现在,按照“期望更糟”的范例,我希望受到一点保护,不受中间人攻击,所以我不想发送纯文本密码:我必须在浏览器(sha256)中加密密码,发送密码,并存储/比较哈希密码

  • 我不明白的是盐的事。更常用的是什么 图案在服务器中生成并发送到登录页面?如何使用
    curl
    测试它?它必须总是不同的吗?用户必须在登录表单中插入它吗
  • “记住我”这件事呢?我真的不明白这一点:我必须用用户名、加密密码和密码在浏览器中存储cookie吗?为什么“记住我”的实现在服务器端?它不应该在客户机中吗
  • 很抱歉,我在web上还没有找到任何东西可以清楚地解释node.js和passport.js、纯javascript客户端和curl测试(我真的很关心curls测试)的概念

    使用node.js和passport.js解释这些概念

    这些概念不依赖于特定的运行时或框架,因此web上的资料不涉及node.js和passport.js是有道理的

  • 。。。盐这东西
  • Salt是一个字符串,它使破解密码变得更加困难。您应该为每个用户使用不同的盐。我经常看到的是,盐的使用只与服务器有关。客户端以明文形式发送密码,服务器用salt散列密码。因此,它不会影响使用
    curl
    进行测试。如果攻击者可以单独使用salt和hash登录(因此不需要知道原始密码),则salt和hash将变得不那么有用

    2。。。“记住我”的事

    通常,不是为每个请求发送凭证,而是使用一种“会话ID”类型的令牌。服务器维护将会话ID与用户记录关联的状态,从而“记住”用户已登录。在cookie中存储密码是很少见的

    每次处理登录时,我都必须存储会话ID并将其发送到客户端?客户把它还给我

    很多网站都是这样做的。我想还是有变化的余地的

    curl--cookiejar文件--data“username=admin&password=pass”http://localhost:5000/login
    将用户名和密码实际存储在cookie中,不是吗


    它向服务器发送用户名和密码,服务器可以用它想要存储在cookie中的任何数据进行响应。如果服务器将用户名和密码作为cookie发回,则返回yes。如果它返回一个会话ID,那么否。

    为什么不使用SSL呢?好的,salt的东西更清楚了,谢谢。“记住我”这个词不太清楚。每次处理登录时,我都必须存储会话ID并将其发送到客户端?客户把它还给我?但是
    curl--cookiejar文件--data“username=admin&password=pass”http://localhost:5000/login
    将用户名和密码实际存储在cookie中,不是吗?