企业内网系统 PHP 代码防泄露与防篡改
,然后分几个部分,背景:我们踩过的真实坑
,讲那个案例,比如去年某制造客户的ERP系统,部署失误导致.git目录暴露,代码泄露,还被篡改加后门,差点丢了生产数据,很多团队觉得内网安全,其实内部人员离职、运维失误、甚至内网被渗透都很常见,常见的坑包括:目录索引未关闭、版本控制目录泄露、敏感文件(如phpinfo、.env)可访问、代码无校验机制被篡改无感知。 然后落地实现步骤:从部署到代码三层防护
,分三层: 1. 部署层基础防护(成本最低,优先做): - Nginx/Apache关闭目录索引:Nginx里加autoindex off;,Apache加Options -Indexes - 隐藏敏感目录:比如.git、.svn、.env这些,Nginx里加location ~ /\.(git|svn|env) { deny all; },或者直接把这些目录放到web根目录外面 - 设置目录权限:web运行用户只有读取权限,没有写入权限,除了上传目录,防止被上传webshell篡改代码 - 禁用危险PHP函数:php.ini里禁用eval、exec、system、shell_exec、passthru这些,防止代码执行漏洞被利用篡改代码 2. 代码层完整性校验(核心代码必做): - 预存核心文件的哈希值(比如用sha256,不要用md5),部署的时候生成,存在配置文件或者数据库里,不要放在web可访问目录 - 运行时定期或者每次请求前校验核心文件的哈希,和预存值比对,不一致就告警、记录日志、终止运行 3. 访问控制层: - 内网系统限制只有指定IP段可以访问,Nginx加allow 192.168.1.0/24; deny all; - 核心接口加签名校验,防止被恶意调用篡改数据 然后可运行的代码示例:核心文件完整性校验工具
,用包裹,代码要可运行,比如:
hashMap = include __DIR__ . '/file_hashes.php';
}
/**
* 校验所有监控文件的完整性
* @return bool 返回true表示完整,false表示被篡改
*/
public function check(): bool
{
foreach ($this->monitorFiles as $file) {
$filePath = dirname(__DIR__) . '/' . $file;
// 文件不存在也视为异常
if (!file_exists($filePath)) {
$this->log("文件缺失: {$file}");
return false;
}
// 计算当前文件的sha256哈希
$currentHash = hash_file('sha256', $filePath);
// 和预存哈希比对
if (!isset($this->hashMap[$file]) || $currentHash !== $this->hashMap[$file]) {
$this->log("文件被篡改: {$file},预期哈希: {$this->hashMap[$file] ?? '无'},实际哈希: {$currentHash}");
return false;
}
}
return如需更完整的 PHP 代码保护与在线加密服务,可访问 https://article.vvxyz.com 了解更多。