PHP安全之道学习笔记6:密码安全
PHP安全之道:密码安全
最近几年用户数据泄露越发频繁,一些使用PHP技术的大型网站被暴库或者脱库,facebook公司曾因为此类事件股价暴跌。从长远发展来看,用户的数据安全对于网站来说至关重要,所以开发者需要关注数据相关的安全,并提高一些对敏感数据的技术性保护。
用户数据的安全往往和用户密码安全息息相关。用户将账号和相关数据存储在服务器上,而密码成了第一个环节。
-
1.常规加密方法
MD5或者SHA1
具体代码如下所示:
<?php
$password = $_POST['password'];
echo md5($password); // md5加密
echo sha1($password); // sha1加密
由于这种加密手段比较常规,如果用户设置的密码过于常见简单,攻击者完全可以使用密码字典进行暴力破解。所以不建议使用MD5等弱加密算法对密码等敏感数据进行加密,使用散列算法进行加密更佳,如:SHA256或者SHA512。这些算法被用于如ssl证书生成或一些重要的生成算法中,值得使用。
PHP内置了hash()函数,具体使用如下代码所示。
<?php
$password = $_POST['password'];
echo hash('sha256', $password); // 使用sha256加密
echo hash('sha512', $password); // 使用sha512加密
曾经有一个神奇的电商网站有一句有名的slogan:"我为自己代言。"在密码安全方面我们也可以为自己的数据加点“盐”,增加安全系数。
使用盐(salt)甚至随机salt来加密,可以让破解更加困难。简单例子如下:
<?php
$password = $_POST['password'];
$salt = rand(1, 100000);
$password = sha1($password . $salt);
而更为复杂的加密,可以使用mcrypt函数来生成salt,代码如下:
<?php
$password = $_POST['password'];
$salt = base64_encode(mcrpyt_create_iv(32, MCRYPT_DEV_RANDOM);
$password = md5($password . $salt);
当然还可以根据自己实际业务需要自定义自己的算法,以前和腾讯的研发联调接口的时候,我们还会约定不同的业务接口使用不同的业务代码来增加token算法的复杂度。
为了防止暴力破解,可以注意以下方面:
- 1.使用验证码进行登录验证或相关授权。
- 2.定期刷新秘钥。
- 3.使用随机数的复杂算法。
- 4.限制某时间段内验证次数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通