安全服务 - 代码示例

PasswordService - 密码安全
use app\common\service\PasswordService; // 验证密码强度 $check = PasswordService::validateStrength('myPassword123'); // 返回: ['valid'=>true, 'score'=>80, 'issues'=>[]] // 安全哈希密码 $hash = PasswordService::hash('myPassword123'); // 使用 bcrypt + 随机盐值 // 验证并自动升级旧哈希 $result = PasswordService::verifyAndUpgrade( 'myPassword123', $storedHash ); // 返回: ['valid'=>true, 'newHash'=>null] // 如果旧哈希需要升级,newHash不为null // 生成随机密码 $random = PasswordService::generateRandom(12);
RateLimitService - 访问限流
use app\common\service\RateLimitService; // 检查是否超过限制 $result = RateLimitService::check( 'login_192.168.1.1', // 限流键 5, // 最大次数 300 // 时间窗口(秒) ); // 返回: ['allowed'=>true, 'remaining'=>4] // 获取剩余次数 $remaining = RateLimitService::getRemaining( 'login_192.168.1.1', 5, 300 ); // 用途: 登录限流、API限流、搜索限流
CommentSpamService - 垃圾检测
use app\common\service\CommentSpamService; // 检测是否为垃圾内容 $result = CommentSpamService::isSpam( '这是一段评论内容', '192.168.1.1' ); // 返回: ['spam'=>false, 'reason'=>''] // 检测: 重复内容、敏感词、链接过多等
CsrfService - CSRF防护
use app\common\service\CsrfService; // 生成CSRF Token $token = CsrfService::generateToken(); // 验证Token $valid = CsrfService::verifyToken($token); // 前端使用: // // $.ajax会自动添加_token参数
FileUploadService - 安全上传
use app\common\service\FileUploadService; // 验证上传文件 $check = FileUploadService::validateUpload( $filePath, ['jpg', 'png', 'gif'], 10485760 // 10MB ); // 检查: 扩展名、文件大小、魔术字节 // 验证文件真实类型 $valid = FileUploadService::verifyMagicBytes( $filePath, 'jpg' ); // 防止伪装扩展名攻击 // 安全文件名 $safeName = FileUploadService::generateSafeFilename( $originalName, 'jpg' );

安全服务总览

PasswordService 密码安全

validateStrength() - 密码强度验证

hash() - bcrypt安全哈希

verifyAndUpgrade() - 验证并自动升级旧哈希

generateRandom() - 生成随机密码

RateLimitService 访问限流

check() - 检查是否超限

getRemaining() - 获取剩余次数

用途: 登录限流、API限流、搜索限流

CommentSpamService 垃圾检测

isSpam() - 检测垃圾内容

检测: 重复内容、敏感词、链接过多

CsrfService CSRF防护

generateToken() - 生成Token

verifyToken() - 验证Token

FileUploadService 安全上传

validateUpload() - 验证文件

verifyMagicBytes() - 验证真实类型

sanitizePath() - 路径安全

generateSafeFilename() - 安全文件名