SG11在线加密系统使用教程(PHP 开发指南)
注意:SG11 并非官方标准加密协议,而是国内部分 PHP 混淆/保护工具(如 SourceGuardian 的旧称 SG11)的俗称。本文所指为基于 SourceGuardian v11+ 的 PHP 代码加密与部署实践,适用于企业级源码保护场景。
一、环境准备
确保运行环境满足以下要求:
- PHP 版本:7.0–8.2(SG11 不支持 PHP 8.3+)
- 已安装 SourceGuardian Loader 扩展(需匹配 PHP SAPI 类型,如
php_sgx.so或php_sgx.dll) - 验证扩展是否加载成功:
<?php
if (extension_loaded('sourceguardian')) {
echo "✅ SourceGuardian 加载成功\n";
echo "版本:" . phpversion('sourceguardian') . "\n";
} else {
die("❌ SourceGuardian 扩展未启用,请检查 php.ini 配置");
}
?>
二、加密单个文件(命令行方式)
使用官方 Encoder 工具(Windows/Linux/macOS 均提供):
# Linux 示例:加密 index.php 为 PHP 8.0 兼容格式
./ioncube_encoder.sh --php-version 8.0 --encode index.php --output protected/index.php
# SG11 推荐命令(需 License)
sg11-encoder --php 7.4 --obfuscate --compress --file app.php --output app.php.encoded
三、PHP 中调用加密逻辑(示例)
SG11 本身不提供运行时加密 API,但可结合其 sg_load() 函数动态加载受保护文件:
<?php
// 加载已加密的配置文件(如 config.php.encoded)
$config_file = __DIR__ . '/config.php.encoded';
if (file_exists($config_file) && function_exists('sg_load')) {
$config = sg_load($config_file);
echo "数据库主机:" . ($config['db_host'] ?? 'N/A');
} else {
throw new RuntimeException("加密配置文件不可用或 sg_load() 未定义");
}
?>
四、常见问题与规避建议
⚠️ 重要提醒:SG11 加密 ≠ 安全加密。它本质是代码混淆与执行保护,无法防止内存 dump 或调试器逆向。切勿用于存储密钥、密码等敏感数据;应配合环境变量或独立密钥管理服务。
若需在 PHP 中实现真正安全的数据加解密,推荐使用原生 openssl_encrypt():
<?php
function secureEncrypt(string $data, string $key): string {
$ivlen = openssl_cipher_iv_length($cipher = "AES-256-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$encrypted = openssl_encrypt($data, $cipher, $key, 0, $iv);
return base64_encode($iv . $encrypted);
}
$key = hash('sha256', $_SERVER['HTTP_HOST'] ?? 'fallback-key', true);
echo secureEncrypt("secret_token_123", $key);
?>
结语
SG11 是成熟的 PHP 源码分发保护方案,但开发者须明确其定位——防直接查看,不防高级逆向。合理使用 + 分层防护(如 Web 服务器权限隔离、OPcache 配置、WAF 规则)才能构建可靠交付体系。始终遵循“最小权限”与“纵深防御”原则。
📚 参考文档:SourceGuardian 官方文档
```