我开始使用 PHP,我认为编写自己的登录/注册脚本会给我一些不错的曝光率。但是,我看到的所有帖子都引用了诸如
“你不是安全专家,你不应该尝试这个”
我应该尝试吗?如果我不应该,你会推荐什么?
登录和注册系统可能是您可以使用会话处理做的最基本的事情,所以这绝对是一个好主意。但是,我建议只使用带有用户名(无密码)的登录名。密码是一项棘手的业务,如果您不保护它们,可能会产生严重的影响。尝试使用仅使用用户名的登录系统会更安全,然后在您了解加密后添加密码。
“知道是不够的,我们必须申请”——李小龙
良好的安全实践只能通过在实际情况中应用来学习。
制作安全的登录和注册页面非常简单:
获得良好的数据库表结构,例如表用户列用户名、名称、密码、电子邮件等
获取用户输入
如果您使用的是本机 mysql 数据库驱动程序,请清理用户输入以防止 SQL 注入。但更好的是,自学有关准备好的语句、MySQLi 或 PDO 等抽象层,使可移植性变得轻而易举。
散列您的密码。永远不要以明文形式存储您的密码,但在散列之前先对密码加盐。注意,散列!=加密。哈希实际上是不可逆的(尽管理论上是可逆的,并且有些像 Crc32 一样很容易发生冲突。哈希是例如MD5,SHA256,SHA512,Bcrypt按它们的强度排序。
然后进行查询以存储这些值。确保用户名列设置为唯一。您不能让两个用户具有相同的用户名。
登录期间:
- 检查用户/密码组合的准确位置。
- 对于密码,通过您在注册期间传递原始密码的相同的盐哈希算法传递它。
- 设置会话变量以使您能够跟踪用户并确保他们在线。