Skip to content

AI 安全最佳实践

安全使用 AI,保护数据和隐私。

🔐 安全风险

常见风险

风险类型说明影响
数据泄露敏感信息被 AI 记录
Prompt 注入恶意输入操控 AI
越权访问AI 执行未授权操作
输出污染AI 生成有害内容

🛡️ 防护策略

1. 数据脱敏

❌ 直接发送敏感信息

用户张三,身份证 110101199001011234,
银行卡 6222021234567890123

✅ 脱敏后发送

用户张*,身份证 110101********1234,
银行卡 6222***********1234

代码实现

javascript
function desensitize(text) {
  return text
    .replace(/(\d{6})\d{8}(\d{4})/, '$1********$2') // 身份证
    .replace(/(\d{4})\d{12}(\d{4})/, '$1***********$2'); // 银行卡
}

2. 输入验证

javascript
// 验证输入长度
if (input.length > 1000) {
  throw new Error('输入过长');
}

// 过滤危险字符
const safeInput = input
  .replace(/<script>/gi, '')
  .replace(/javascript:/gi, '');

// 验证格式
if (!isValidJSON(input)) {
  throw new Error('无效格式');
}

3. 权限控制

javascript
// 检查用户权限
async function executeCommand(user, command) {
  // 检查权限
  const hasPermission = await checkPermission(user, command);
  
  if (!hasPermission) {
    logAttempt(user, command);
    throw new Error('权限不足');
  }
  
  // 执行命令
  return await execute(command);
}

4. 输出过滤

javascript
// 过滤敏感信息
function filterOutput(output) {
  return output
    .replace(/\b\d{18}\b/g, '[身份证已隐藏]')
    .replace(/\b\d{16,19}\b/g, '[银行卡已隐藏]')
    .replace(/\b1[3-9]\d{9}\b/g, '[手机号已隐藏]');
}

// 检查有害内容
async function checkSafety(output) {
  const isSafe = await ai.checkSafety(output);
  
  if (!isSafe) {
    throw new Error('内容不安全');
  }
  
  return output;
}

5. 审计日志

javascript
// 记录所有操作
async function logAction(user, action, result) {
  await db.insert('audit_log', {
    user: user.id,
    action: action,
    result: result,
    timestamp: Date.now(),
    ip: user.ip
  });
}

// 定期审查
async function reviewLogs() {
  const suspicious = await db.query(`
    SELECT * FROM audit_log 
    WHERE result = 'failed' 
    AND timestamp > NOW() - INTERVAL 1 DAY
  `);
  
  if (suspicious.length > 10) {
    await sendAlert('异常操作过多');
  }
}

🔍 安全配置

OpenClaw 安全配置

json
{
  "security": {
    "sandbox": true,
    "allowedCommands": ["ls", "cat", "grep"],
    "blockedCommands": ["rm", "sudo", "curl"],
    "maxTokens": 4096,
    "timeout": 30000
  },
  "audit": {
    "enabled": true,
    "logLevel": "info",
    "retention": 90
  }
}

API Key 保护

❌ 错误做法

javascript
// 硬编码在代码中
const apiKey = "sk-1234567890abcdef";

✅ 正确做法

javascript
// 使用环境变量
const apiKey = process.env.AI_API_KEY;

// 或使用加密存储
const apiKey = await decryptSecret('ai-api-key');

🚨 应急响应

发现泄露怎么办?

  1. 立即撤销

    bash
    # 撤销 API Key
    openclaw keys revoke compromised-key
  2. 修改密码

    bash
    # 修改所有相关密码
  3. 通知用户

    javascript
    await notifyUsers('发现安全漏洞,请修改密码');
  4. 调查原因

    javascript
    const logs = await getLogs({
      startTime: incidentTime,
      filter: 'security'
    });
  5. 修复漏洞

    javascript
    await patchVulnerability();
    await updateSecurityPolicy();

📋 安全检查清单

开发阶段

  • [ ] 代码审查
  • [ ] 安全测试
  • [ ] 渗透测试
  • [ ] 依赖检查

部署阶段

  • [ ] 配置检查
  • [ ] 权限验证
  • [ ] 日志配置
  • [ ] 监控配置

运维阶段

  • [ ] 定期更新
  • [ ] 日志审查
  • [ ] 漏洞扫描
  • [ ] 备份验证

🎯 安全等级

基础安全

  • [ ] 使用 HTTPS
  • [ ] 密码加密存储
  • [ ] 输入验证
  • [ ] 错误日志

中级安全

  • [ ] 双因素认证
  • [ ] 访问控制
  • [ ] 数据脱敏
  • [ ] 审计日志

高级安全

  • [ ] 零信任架构
  • [ ] 实时监控
  • [ ] 自动响应
  • [ ] 定期演练

重要

安全无小事,宁可过度防护,不可掉以轻心!

🟢🐉 泡泡龙

Released under the MIT License.