相关疑难解决方法(0)

临时密码安全 - 存储为纯文本

将临时/机器生成的密码作为明文存储在数据库中会有多少安全问题?

我知道密码应该使用带盐的单向散列函数加密.对于用户提供的密码尤其如此,因为用户通常一遍又一遍地重复使用它们.如果数据库被盗,小偷可能能够访问第三方网站上的用户用户帐户,例如:公用事业账单,社交网络,甚至网上银行的潜力.

将临时/机器生成的"欢迎"或"重置"密码存储为数据库中的明文是多少问题?密码将通过电子邮件发送给用户,登录后必须更改.然后,他们提供的密码将被散列.

我问的原因是存在一些很好的属性来存储临时密码作为明文.例如,如果用户未收到"欢迎"或"重置"电子邮件,管理员可以快速查找其临时密码.

因为临时密码是机器生成的,如果数据库被盗,窃贼将无法访问用户登录的任何第三方网站.然而,小偷可以登录到生成临时密码的应用程序.

为这些密码分配一个小的"到期"将限制曝光,但总的来说,我只是想看看这种方法有多危险.

security passwords hash cryptography

4
推荐指数
2
解决办法
928
查看次数

MYSQL:使用if语句的过程

我正在尝试创建一个首先检查用户密码的例程,如果它是正确的,它将从不同的表返回一些值或更改一行中的某些值.

如果没有在PHP中处理两个查询,这是否可行?首先调用密码,检查其是否正确,然后允许用户更改名称.

这是一个使用电子邮件和密码获取用户行的示例.

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `get_user_info`(
    IN in_Email VARCHAR(45),
    IN in_Pass VARCHAR(45)
    )
BEGIN
    SELECT * FROM User WHERE Email = in_Email AND Pass = in_Pass;
END
Run Code Online (Sandbox Code Playgroud)

这就是我到目前为止所得到的:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `change_pass`(
    in_Email VARCHAR(45),
    in_PassOld VARCHAR(45),
    in_PassNew VARCHAR(45)
)
BEGIN
    SET @PassOld = (SELECT Pass From User WHERE Email = in_Email);

    IF(@PassOld = in_PassOld) THEN
        UPDATE User SET Pass = in_PassNew WHERE Email = in_Email;

    END IF;

ENDND IF;
END
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!

mysql stored-procedures if-statement

2
推荐指数
1
解决办法
4万
查看次数

存储密码时为什么要使用salt而不是AES

与使用salt相比,AES在将密码存储到数据库时不会更安全地保护密码.注意:不关心性能,只关心安全性.哪一个会更安全.此外,将加密密钥存储在另一个数据库服务器中的加密显然不是更好.

mysql encryption hash salt password-protection

-1
推荐指数
1
解决办法
310
查看次数

我在 Node.js 中的哪里存储敏感信息?

我已经使用express-generator 创建了一个骨架网站和一个可以使用的模板。我不知道在哪里存储敏感信息,例如 Data_config 密钥、JWT 密钥、连接 URI 等。有解决方法吗?

这是我当前的文件树。./bin/www 有主 server.js

我以前使用过dotenv包,但这是我第一次使用express-generator。我通过添加 .env 文件尝试了相同的过程,并通过 require('dotenv').config() 要求 dotenv,但它给了我一个错误。

javascript mongodb node.js

-1
推荐指数
1
解决办法
2291
查看次数