当前位置: 首页 > news >正文

AI 应用安全最佳实践:保护数据和系统安全

AI 应用安全最佳实践:保护数据和系统安全

前言

AI 应用的安全是一个综合性的话题,涉及数据保护、模型安全、API 安全等多个方面。随着 AI 应用的普及,安全问题变得越来越重要。

我在项目中负责过多个 AI 系统的安全设计,对安全风险和防护措施有深入理解。今天分享一些安全最佳实践。

数据安全

数据加密

from cryptography.fernet import Fernet from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.primitives import serialization, hashes class DataSecurity: """数据安全""" def __init__(self): self.symmetric_key = Fernet.generate_key() self.cipher = Fernet(self.symmetric_key) def encrypt(self, data: str) -> bytes: """对称加密""" return self.cipher.encrypt(data.encode()) def decrypt(self, encrypted_data: bytes) -> str: """对称解密""" return self.cipher.decrypt(encrypted_data).decode() def generate_rsa_key_pair(self) -> tuple: """生成 RSA 密钥对""" private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) public_key = private_key.public_key() return private_key, public_key def rsa_encrypt(self, public_key, data: bytes) -> bytes: """RSA 加密""" return public_key.encrypt( data, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) )

数据脱敏

import re class DataAnonymizer: """数据脱敏器""" def __init__(self): self.patterns = [ (r"\b[\w.-]+@[\w.-]+\.\w+\b", "[邮箱]"), (r"\b\d{11}\b", "[手机号]"), (r"\b\d{3}-\d{2}-\d{4}\b", "[SSN]"), (r"\b\d{16}\b", "[卡号]") ] def anonymize(self, text: str) -> str: """脱敏文本""" result = text for pattern, replacement in self.patterns: result = re.sub(pattern, replacement, result) return result

模型安全

输入验证

class InputValidator: """输入验证器""" def __init__(self): self.max_length = 1000 self.blocked_patterns = [ "忽略之前的指令", "DAN 模式", "越狱模式" ] def validate(self, text: str) -> tuple: """验证输入""" # 长度检查 if len(text) > self.max_length: return False, "输入过长" # 内容检查 for pattern in self.blocked_patterns: if pattern.lower() in text.lower(): return False, "包含恶意内容" return True, "验证通过"

输出过滤

class OutputFilter: """输出过滤器""" def __init__(self): self.sensitive_topics = [ "暴力", "色情", "仇恨", "自杀", "诈骗" ] def filter(self, text: str) -> str: """过滤敏感内容""" result = text for topic in self.sensitive_topics: result = result.replace(topic, "[内容已过滤]") return result def check_safety(self, text: str) -> bool: """检查安全性""" for topic in self.sensitive_topics: if topic in text: return False return True

API 安全

认证与授权

from fastapi import FastAPI, Depends, HTTPException from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm from jose import JWTError, jwt from passlib.context import CryptContext class APISecurity: """API 安全""" def __init__(self, secret_key: str, algorithm: str = "HS256"): self.secret_key = secret_key self.algorithm = algorithm self.pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") self.oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") def verify_password(self, plain_password: str, hashed_password: str) -> bool: """验证密码""" return self.pwd_context.verify(plain_password, hashed_password) def create_access_token(self, data: dict) -> str: """创建访问令牌""" to_encode = data.copy() encoded_jwt = jwt.encode(to_encode, self.secret_key, algorithm=self.algorithm) return encoded_jwt async def get_current_user(self, token: str = Depends(oauth2_scheme)): """获取当前用户""" credentials_exception = HTTPException( status_code=401, detail="无法验证凭据" ) try: payload = jwt.decode(token, self.secret_key, algorithms=[self.algorithm]) username: str = payload.get("sub") if username is None: raise credentials_exception except JWTError: raise credentials_exception return username

请求限流

from slowapi import Limiter, _rate_limit_exceeded_handler from slowapi.util import get_remote_address from slowapi.errors import RateLimitExceeded class RateLimiterMiddleware: """请求限流""" def __init__(self, app): self.limiter = Limiter(key_func=get_remote_address) app.state.limiter = self.limiter app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) def limit(self, limit_str: str): """限制装饰器""" return self.limiter.limit(limit_str)

安全监控

import logging from pythonjsonlogger import jsonlogger class SecurityLogger: """安全日志""" def __init__(self): self.logger = logging.getLogger("security") self.logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = jsonlogger.JsonFormatter( '%(asctime)s %(levelname)s %(message)s %(request_id)s' ) handler.setFormatter(formatter) self.logger.addHandler(handler) def log_security_event(self, event_type: str, details: dict): """记录安全事件""" self.logger.info( f"Security event: {event_type}", extra={"details": details} )

总结

AI 应用安全需要多层次防护:

  1. 数据安全:加密和脱敏
  2. 模型安全:输入验证和输出过滤
  3. API 安全:认证、授权和限流
  4. 安全监控:日志记录和告警

关键要点:

  • 数据加密是基础
  • 需要过滤有害输入输出
  • API 需要认证和限流
  • 安全事件需要记录和监控
http://www.jsqmd.com/news/924546/

相关文章:

  • WeChatMsg免费工具:三步永久保存微信聊天记录完整指南
  • Rust测试框架:构建可靠的测试基础设施
  • 普通数转换为二进制数的方法
  • 终极解决方案:D2DX让暗黑破坏神2在现代PC上焕发新生
  • 基于Arduino与PWM的简易音频播放器:从数字信号到模拟声波的实现
  • 区块链+联邦学习:构建可信AI网络数据共享架构实战
  • 电子政务 数字政府素材
  • 多模态记忆:让 AI Agent 记忆各种类型的信息
  • 5分钟解锁你的网易云音乐收藏:ncmdumpGUI完全指南
  • Rust测试模式:构建高效可靠的测试体系
  • 2026年4月行业内比较好的轨距拉杆直销厂家找哪家,道钉锚固剂/鱼尾螺栓/RGV轨道/轨距拉杆,轨距拉杆公司哪个好 - 品牌推荐师
  • 2026 玻璃钢罐厂家专业评测榜 、推荐排行 ! - 资讯纵览
  • AI儿童绘本生成:技术架构、实战难点与未来展望
  • 网络规划设计师案例要求
  • 3步掌控你的数字记忆:WeChatMsg微信聊天记录永久保存终极指南
  • 【Gemini诗歌生成高阶秘籍】:20年AI内容专家亲授7大避坑法则与韵律控制心法
  • 基于Arduino与3D打印的六轮摇臂转向机器人平台设计与实现
  • 2026 年贵州铜仁职业培训怎么选?本地综合培训机构全面解析 - 资讯纵览
  • 记忆压缩:高效管理 AI Agent 的记忆
  • 想写一个找车app,但是汽油车,没有电,如何跟app连接通讯呢?
  • Rust性能测试与基准测试:优化代码性能
  • 3步掌握X-Spider:告别繁琐的推特媒体收集工作
  • 基于Atmega1284P的Arduino兼容板DIY全流程解析
  • Arduino NANO程序上传失败?CH340G驱动与硬件时钟问题全解析
  • 从废旧灯带自制Arduino RGB LED模块:变废为宝的电子外科手术
  • 为什么92%的Gemini私有部署未启用内存隔离?——2024 Q2第三方审计报告首次公开,含3步热修复补丁
  • 2026武汉黄金回收多少钱一克?靠谱商家推荐TOP3,13区全域免费上门当场到账 - 资讯纵览
  • OpenCV 是什么?能做什么?一张图看懂计算机视觉入门
  • Windows微信QQ防撤回终极指南:一键永久保存所有消息的完整教程
  • 基于Arduino Leonardo的倒计时手表制作:从硬件连接到状态机编程