本文目录导读:

- 身份鉴别(核心必考项)
- 访问控制(权限管理)
- 安全审计(日志记录)
- 输入输出验证(防注入/防XSS)
- 数据完整性 & 保密性
- PHP环境本身加固
- 渗透测试自检清单(交付前测一遍)
- 特别提醒(开发者容易遗漏的高扣分项)
在PHP项目中通过等级保护(等保)测评,是一个体系化的过程,不仅仅是“写代码”的事,它需要从管理制度、物理环境、网络架构、主机安全、应用安全、数据安全等多个层面去贴合《网络安全等级保护基本要求》(GB/T 22239-2019)。
作为开发者,我们最关注的是应用安全(S3A3)和数据安全层面的整改,下面从代码层面总结一套核心的落地要点,助你拿到高分:
身份鉴别(核心必考项)
这是扣分最严重的地方,PHP项目必须解决弱口令和明文传输。
- 强制密码复杂度:不能只在前端JS限制,必须在后端PHP校验,密码长度≥8位,且包含大小写字母、数字、特殊字符中至少3类。
- 登录失败锁定:在
Session或Redis中记录失败次数,连续失败5次后,锁定账号或IP 15分钟以上。 - 加密存储:密码严禁使用
md5(),必须使用password_hash()配合PASSWORD_BCRYPT或PASSWORD_ARGON2I,验证用password_verify()。 - 传输保密:如果App或网页不支持HTTPS,登录接口必须做国密SM4或AES加密处理后再传输,且密钥不能硬编码在前端。
访问控制(权限管理)
- 强制后台RBAC(基于角色的访问控制):不能只靠前端按钮控制显示/隐藏,后端每个请求(Controller方法)必须校验
Session中的角色权限,没有权限直接返回403。 - 默认禁止:新上传的文件、新建立的用户,默认不给任何执行权限(
chmod 644而非755)。 - 会话超时:登录状态(
$_SESSION)必须设置有效时间(如30分钟),无操作自动销毁,避免管理员离开后账号被盗用。
安全审计(日志记录)
- 全量日志:必须记录所有用户的登录、退出、增删改查操作,特别是后台管理员的操作(如删除数据、修改配置)。
- :包含访问时间、操作人、操作IP、请求URL、请求参数(敏感信息如密码需掩码)、操作结果。
- 日志保护:日志文件(如
/logs/)在Web根目录下必须设置禁止直接访问(Nginx/Apache配置拒绝规则),且日志不能允许普通用户修改。
输入输出验证(防注入/防XSS)
- SQL注入:严禁直接拼接SQL语句,必须使用 PDO预处理语句(Prepared Statement) 或 Laravel/Symfony 的ORM。
- XSS跨站:输出到HTML的所有变量,必须通过
htmlspecialchars($var, ENT_QUOTES, 'UTF-8')转义,或者使用模板引擎(如 Twig/Blade)的自动转义功能。 - 文件上传:校验文件的MIME类型、扩展名(白名单制,只允许
.jpg、.png、.pdf)、文件头(getimagesize()检测)。关键: 上传目录禁止执行PHP,通过Rewrite规则或配置禁用该目录的php_admin_flag engine off。
数据完整性 & 保密性
- 敏感字段加密:数据库中存储的身份证号、手机号、银行卡号等个人隐私信息,必须使用AES-256-CBC加密存储,密钥放服务器端(如
.env文件或密钥管理系统),不能存活在数据库。 - 防篡改:对磁盘上的重要配置文件(如支付回调、订单状态),加入HMAC签名校验,防止被恶意修改。
PHP环境本身加固
- 关闭错误回显:生产环境
display_errors = Off,将错误日志记录到error_log,防止路径泄露和报错注入。 - 危险函数禁用:在
php.ini的disable_functions中禁用危险函数,如system, exec, shell_exec, passthru, popen, proc_open, eval, assert等。 - 禁用旧协议:PHP版本建议至少7.4以上(最好8.x),且禁止使用过时的加密算法(如SSLv3、TLSv1.0/1.1)。
渗透测试自检清单(交付前测一遍)
在等保测评机构的工程师来扫漏洞前,自己先跑一遍:
- 用
sqlmap打一下所有带参数的接口,是否全部阻断?- 用
BurpSuite抓包,看看后台登录是否抓不到明文密码?- 试着上传一个
.php或.phtml文件,是否会被拦截?- 尝试用低权限用户直接访问后台路由,是否被后端拦截?
- 检查
Cookie是否设置了HttpOnly和Secure属性?
特别提醒(开发者容易遗漏的高扣分项)
- 明文密码告警:现在很多PHP框架(如Laravel)自带加密,但很多老项目(如原生PHP或ThinkPHP3)用
md5(sha1($pass)),等保不仅要求防爆破,还要求存储弱碰撞,这是必判不合规项。 - 越权漏洞:很多PHP项目只检查了“是否登录”,但没检查“是否操作自己的数据”,A用户修改了订单号,能查看B用户的订单,等保测试会重点测这种水平越权。
PHP过等保,核心就是转向 “安全开发” 意识和规范的代码落地,如果项目是已经写好的老系统,建议用 PHP -S 排查危险函数,或者使用 OpenResty/WAF 在Web层做二次拦截,作为代码来不及改时的“缓兵之计”,但代码层面的整改是终局方案。
如果你告诉我你们是基于原生PHP还是Laravel/ThinkPHP,我可以给你更针对性的代码片段。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播