Phát triển AI an toàn
Complete developer guide to building secure AI applications - from input validation to deployment
Updated: August 2026
Các nguyên tắc bảo mật
1. Bảo vệ theo chiều sâu
Implement multiple layers of security controls. No single control should be relied upon exclusively.
2. Đặc quyền tối thiểu
Cấp các quyền cần thiết tối thiểu cho người dùng, API và các thành phần AI.
3. Fail Secure
Khi xảy ra lỗi, hãy mặc định ở trạng thái bảo mật thay vì trạng thái cho phép.
4. Zero Trust
Never trust, always verify. Validate at every boundary, including internal systems.
Xác thực đầu vào
All user input must be validated and sanitized before processing. This is your first line of defense against prompt injection and other attacks.
Lớp xác thực đầu vào
```python
import re
from typing import Optional, List
class InputValidator:
# Known injection patterns
INJECTION_PATTERNS = [
r"ignore\s+(previous|prior|all)\s+(instructions|rules)",
r"(forget|disregard)\s+(your|all)\s+(instructions|rules)",
r"you\s+are\s+(now|still)\s+(dan|do\s+anything)",
r"system\s+prompt:",
r"{{.*}}",
r"\[INST\]|\[/INST\]|<\|end\|>",
]
# Encoding patterns
ENCODING_PATTERNS = [
r"base64:", # Base64 prefix
r"\\x[0-9a-fA-F]{2}", # Hex encoding
r"%[0-9a-fA-F]{2}", # URL encoding
]
def validate(self, user_input: str) -> dict:
"""Validate user input for potential attacks."""
issues = []
# Length check
if len(user_input) > 10000:
issues.append("Input exceeds maximum length")
# Check for injection patterns
for pattern in self.INJECTION_PATTERNS:
if re.search(pattern, user_input, re.IGNORECASE):
issues.append(f"Suspicious pattern detected: {pattern}")
# Check for encoding attempts
for pattern in self.ENCODED_PATTERNS:
if re.search(pattern, user_input):
issues.append(f"Encoded content detected")
# Check for high entropy (possible encoding)
unique_chars = len(set(user_input))
if len(user_input) > 50 and unique_chars / len(user_input) < 0.3:
issues.append("High entropy detected - possible encoding")
return {
"valid": len(issues) == 0,
"issues": issues,
"sanitized": self._sanitize(user_input)
}
def _sanitize(self, user_input: str) -> str:
"""Basic sanitization."""
# Remove control characters
sanitized = re.sub(r'[\x00-\x1F\x7F]', '', user_input)
return sanitized.strip()
```
Danh sách kiểm tra xác thực
- Xác thực tại ranh giới ứng dụng
- Kiểm tra độ dài đầu vào
- So khớp mẫu để tiêm
- Phát hiện các nỗ lực mã hóa
- Xác thực loại
- Vệ sinh trước khi xử lý
- Lỗi xác thực nhật ký
- Giới hạn tỷ lệ
Xử lý đầu ra
LLM outputs must be validated and sanitized before being presented to users or passed to other systems.
Lọc nội dung
- Kiểm tra khả năng hiển thị dữ liệu nhạy cảm
- Xác minh không có lời nhắc hệ thống nào bị rò rỉ
- Xác thực định dạng đầu ra
- Kiểm tra nội dung được chèn
Phát hiện PII
- Quét thông tin cá nhân
- Che giấu hoặc che giấu dữ liệu nhạy cảm
- Ghi nhật ký các lần hiển thị PII
- Thông báo cho người dùng khi được phát hiện
Xác thực định dạng
- Xác thực kết quả đầu ra JSON
- Kiểm tra cấu trúc dự kiến
- Xác minh các giá trị được phép
- Sạch hóa HTML nếu có
Ví dụ về trình xử lý đầu ra
```python
import re
import json
class OutputHandler:
PII_PATTERNS = {
"ssn": r"\b\d{3}-\d{2}-\d{4}\b",
"email": r"\b[\w.-]+@[\w.-]+\.\w+\b",
"phone": r"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b",
}
def process_output(self, raw_output: str) -> dict:
"""Process and validate LLM output."""
result = {
"original": raw_output,
"cleaned": raw_output,
"warnings": [],
"blocked": False
}
# Check for system prompt leakage
if "system prompt" in raw_output.lower():
result["warnings"].append("System prompt reference detected")
# Scan for PII
for pii_type, pattern in self.PII_PATTERNS.items():
matches = re.findall(pattern, raw_output)
if matches:
result["warnings"].append(f"{pii_type} detected in output")
# Optionally mask
result["cleaned"] = re.sub(pattern, "[REDACTED]", result["cleaned"])
return result
```
Bảo mật API
Xác thực
- Sử dụng quản lý khóa API mạnh mẽ
- Triển khai OAuth 2.0 nếu có thể
- Xác thực mã thông báo JWT
- Xoay vòng khóa API
Ủy quyền
- Kiểm soát truy cập dựa trên vai trò (RBAC)
- phạm vi khóa API
- Giới hạn tốc độ cho mỗi người dùng
- Cách ly đối tượng thuê
Giới hạn tỷ lệ
- Giới hạn dựa trên mã thông báo
- Giới hạn dựa trên yêu cầu
- Kiểm soát chi phí
- Điều tiết theo cấp độ
Danh sách kiểm tra bảo mật API
- Chỉ sử dụng HTTPS
- Giới hạn tốc độ triển khai
- Xác thực tất cả thông tin đầu vào
- Sạch hóa tất cả đầu ra
- Sử dụng khóa API, không được nhúng
- Ký yêu cầu triển khai
- Truy cập API nhật ký
- Triển khai CORS đúng cách
Xác thực & Ủy quyền
Xác thực người dùng
- Chính sách mật khẩu mạnh
- Hỗ trợ MFA
- Quản lý phiên
- Hết hạn mã thông báo
Xác thực API
- Quản lý khóa API
- Phạm vi OAuth
- Xác thực JWT
- Xoay khóa
Ủy quyền
- Triển khai RBAC
- Kiểm tra quyền
- Quyền truy cập cấp tài nguyên
- Ghi nhật ký kiểm tra
Bảo mật dữ liệu
Phân loại dữ liệu
- Xác định dữ liệu nhạy cảm
- Phân loại theo độ nhạy
- Áp dụng các biện pháp kiểm soát theo danh mục
- Kiểm tra thường xuyên
Mã hóa
- TLS đang được truyền tải
- AES ở chế độ nghỉ
- Quản lý khóa
- Xoay khóa
Xử lý PII
- Phát hiện
- Tối thiểu hóa
- Quản lý sự đồng ý
- Quyền xóa
Ghi nhật ký & Giám sát
Những gì cần ghi lại
Sự kiện bảo mật
- Các nỗ lực xác thực
- Lỗi cấp phép
- Vượt quá giới hạn tỷ lệ
- Các mẫu đáng ngờ
Sự kiện cụ thể AI
- Các nỗ lực chèn nhanh
- Truy cập nhanh chóng vào hệ thống
- Yêu cầu công cụ
- Truy cập dữ liệu thông qua AI
Sự kiện vận hành
- Cuộc gọi API
- Lỗi và ngoại lệ
- Số liệu hiệu suất
- Theo dõi chi phí
Giám sát các phương pháp hay nhất
- Cảnh báo theo thời gian thực về các sự kiện bảo mật
- Trang tổng quan về số liệu bảo mật
- Tự động phát hiện sự bất thường
- Tích hợp với SIEM
- Xem xét nhật ký thường xuyên
- Chính sách lưu giữ
Các lỗ hổng phổ biến
1. IDOR trong Tính năng AI
Tham chiếu đối tượng trực tiếp không an toàn khi AI truy cập tài nguyên
Ví dụ
User asks AI to "read file X" and AI has access without proper authorization checks.
2. SSRF thông qua LLM
Giả mạo yêu cầu phía máy chủ thông qua lệnh gọi công cụ AI
Ví dụ
Nhắc nhở AI đưa ra yêu cầu đối với các dịch vụ nội bộ.
3. Bỏ qua xác thực
Xác thực yếu hoặc thiếu cho các điểm cuối AI
Ví dụ
Các điểm cuối API AI mà không có kiểm tra xác thực thích hợp.
4. Tiếp xúc với Vector DB
Cơ sở dữ liệu vectơ không được bảo vệ với các phần nhúng nhạy cảm
Ví dụ
DB vector có thể truy cập công khai với dữ liệu nhạy cảm được nhúng.
Tuân thủ
GDPR (EU)
- Cơ sở hợp pháp để xử lý
- Giảm thiểu dữ liệu
- Quyền truy cập/xóa
- Khả năng di chuyển dữ liệu
CCPA (California)
- Quyền được biết
- Quyền xóa
- Quyền chọn không tham gia
- Không phân biệt đối xử
AI-Specific
- Các yêu cầu của Đạo luật AI của EU
- Đánh giá rủi ro AI
- Nghĩa vụ minh bạch
- Giám sát của con người