我必须创建一个登录模块(问题不是特定于语言的),但我不确定如何验证用户。我将密码存储在哪里以及如何存储。我是否必须加密和解密我的密码,如果是,最好的建议方法是什么?总体而言,我需要知道所有的事情,我需要为开发一个登录模块,其中用户可以安全登录访问我的网站。
发布于 2010-10-23 17:54:16
你不需要解密你的密码来验证它们,只需要一种加密方式就可以了。其思想是,当用户输入密码时,您以相同的方式(使用相同的算法和"salt")对其进行加密,然后与存储在数据库中的加密密码进行比较。如果它们相等,那么很可能意味着它是相同的原始密码。因此,您可以防止任何人-管理员或任何攻击者-知道用户在您的网站上使用的原始密码。
至于其余部分,非常简单,您的数据库中有一个表,其中包含用户登录、加密的密码,可能还包含一些配置文件信息(全名等)。
我通常使用以下函数来散列用户密码:
$password_hash = sha1(MY_SALT_1 . $login_name . MY_SALT_2 .
$password . MY_SALT_3);其中MY_SALT_*是任意的预定义字符串,可以是例如'the dark','side of','the side‘(或者实际上相关性越小-越好)。
https://stackoverflow.com/questions/4003247
复制相似问题