我们在 MySQL 5.6 中实现了一个存储过程,它使用以下命令检查用户登录;
CREATE DEFINER=`root`@`localhost` PROCEDURE `CheckLogin`(iUserId INTEGER, sPassword varchar(25))
BEGIN
SELECT UserId FROM UserTable
WHERE Password = SHA2(sPassword,256)
And UserId = iUserId;
END
如果密码匹配,则通过返回 UserId,存储过程可以正常工作。
目前我们启用了 General MySQL Logging,我注意到他们输入的用户密码是纯文本的,并且在日志文件中可见。
考虑到这种安全风险,将 SHA2 功能移动到我的实际 ASP.NET 应用程序中并使用 C# 散列密码是否更好?
另一种选择是我只是不启用 MySQL 常规日志记录。