SG13加密工具在PHP中的典型应用场景
SG13(SecureGuard-13)并非国际标准算法,而是国内某安全团队开源的轻量级对称加密封装库(基于AES-256-CBC + HMAC-SHA256双校验机制),专为Web应用中敏感数据的“场景化防护”而设计。其核心优势在于:自动密钥派生、防重放时间戳、可配置的过期策略及零依赖纯PHP实现(PHP 7.4+)。以下为三大典型PHP应用场景与实践示例。
1. 用户敏感信息临时令牌生成(如密码重置链接)
避免明文token泄露风险,SG13可将用户ID、邮箱、时效等结构化数据加密为短时有效令牌:
<?php
require_once 'vendor/autoload.php';
use SG13\Encryptor;
// 配置主密钥(建议从环境变量读取)
$masterKey = $_ENV['SG13_MASTER_KEY'] ?? 'your-32-byte-secret-key-here-12345678';
$encryptor = new Encryptor($masterKey);
// 生成带过期时间的重置令牌(15分钟有效期)
$payload = [
'uid' => 12345,
'email' => 'user@example.com',
'type' => 'reset',
'exp' => time() + 900 // 15分钟
];
$token = $encryptor->encrypt($payload, ['ttl' => 900]);
// 输出示例:eyJhbGciOiJBMjU2IiwiZXhwIjoxNzE1MjYwODAwfQ.8aFk...(URL安全Base64)
echo "Reset Token: " . $token;
?>
2. API接口请求签名与参数加密
防止API请求被篡改或重放。客户端加密参数,服务端解密并验证时间戳:
<?php
// 服务端验证逻辑(如 Laravel 中间件)
try {
$decrypted = $encryptor->decrypt($request->header('X-Encrypted-Data'));
if (time() > ($decrypted['exp'] ?? 0)) {
throw new Exception('Request expired');
}
// 安全处理业务逻辑...
$user = User::find($decrypted['uid']);
} catch (Exception $e) {
http_response_code(401);
echo json_encode(['error' => 'Invalid or expired request']);
}
?>
3. 数据库字段级加密(如手机号、身份证号)
满足《个人信息保护法》要求,在存储前加密,查询时按需解密(避免全表扫描):
注意:生产环境务必使用独立密钥管理(如Vault),且禁止在日志中输出明文解密结果。
SG13通过简洁的API降低安全落地门槛,但切记:加密不能替代权限控制与传输层安全(HTTPS)。合理搭配使用,方能构建纵深防御体系。
```