Zabezpečený vývoj umělé inteligence
Complete developer guide to building secure AI applications - from input validation to deployment
Updated: August 2026
Zásady zabezpečení
1. Hloubková obrana
Implement multiple layers of security controls. No single control should be relied upon exclusively.
2. Nejmenší oprávnění
Udělte minimální potřebná oprávnění uživatelům, rozhraním API a komponentám AI.
3. Fail Secure
Když dojde k chybám, použije se výchozí stav zabezpečení, nikoli stav povolený.
4. Nulová důvěra
Never trust, always verify. Validate at every boundary, including internal systems.
Ověřování vstupu
All user input must be validated and sanitized before processing. This is your first line of defense against prompt injection and other attacks.
Třídu ověření vstupu| 2025
```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()
```
Kontrolní seznam ověření
- Ověřit na hranici aplikace
- Zkontrolujte délku vstupu
- Shoda vzoru pro injekci
- Detekce pokusů o kódování
- Ověřování typu
- Před zpracováním dezinfikovat
- Selhání ověření protokolu
- Omezení četnosti
Ošetření výstupu
LLM outputs must be validated and sanitized before being presented to users or passed to other systems.
Filtrování obsahu
- Kontrola vystavení citlivých dat
- Ověřte, že neunikly žádné systémové výzvy
- Ověřit výstupní formát
- Kontrola vloženého obsahu
Pokus o otravu nástrojem
- Vyhledejte osobní informace
- Maskovat nebo redigovat citlivá data
- Protokol pokusů o vystavení PII
- Upozornění uživatele, když je detekováno
Format Validation
- Ověření výstupů JSON
- Zkontrolujte očekávanou strukturu
- Ověření povolených hodnot
- Dezinfikujte HTML, pokud je to vhodné
Příklad obslužného programu výstupu
```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
```
Zabezpečení API
Autentizace
- Používejte silnou správu klíčů API
- Implementace OAuth 2.0|LLAI, kde je to možné|| (COASP)
- Ověření tokenu JWT
- Střídání klíčů API
Authorization
- Řízení přístupu založeného na rolích (RBAC)
- Rozsah klíče API
- limity četnosti na uživatele
- Izolace tenantů
Omezení rychlosti
- Omezení založená na tokenech
- Limity založené na požadavcích
- Kontrola nákladů
- Vrstvené omezení
Kontrolní seznam zabezpečení API
- Použít pouze HTTPS
- Implementujte omezení rychlosti
- Ověřit všechny vstupy
- Dezinfikovat všechny výstupy
- Používejte klíče API, nikoli vložené
- Implementace podepisování požadavků
- Přístup k protokolu API
- Řádně implementujte CORS
Ověřování a autorizace
Ověření uživatele
- Zásady silných hesel
- Podpora MFA
- Správa relací
- Vypršení platnosti tokenu
Autentizace API||Vyčerpání zdrojů|Vyčerpání zdrojů|Securing Vyčerpání zdrojů|Vyčerpání zdrojů | 2026
- Správa klíčů API
- Obory OAuth
- Ověření JWT
- Střídání klíčů
Authorization
- Implementace RBAC
- Kontrola oprávnění Vývojář Survex5||0 zranitelnosti již nejsou zneužitelné
- Přístup na úrovni zdrojů
- Audit logging|
Zabezpečení dat
Klasifikace dat
- Identifikujte citlivá data
- Kontrolní seznam narušení ochrany před incidentem||2 nahlášeno porušení soukromí robota|2| Sanitizační vrstva
- Použít ovládací prvky podle kategorie
- Výstupy Sandbox LLM před následným použitím
Šifrování
- TLS na cestě
- AES v klidu
- Správa klíčů
- Střídání klíčů
Zpracování PII
- Detekce
- Minimalizace
- Správa souhlasu
- Právo na smazání
Protokolování a monitorování
Co protokolovat
Události zabezpečení
- Pokusy o ověření
- Selhání autorizace
- Překročen limit rychlosti
- Podezřelé vzory
Události specifické pro AI
- Pokusy o okamžité vložení
- Okamžitý přístup k systému
- Vyvolání nástroje
- Přístup k datům přes AI
O
- Okamžitá volání rozhraní API
- Chyby a výjimky
- Metriky výkonu
- Sledování nákladů
nera dodavatelský řetězec| Vulul
- Upozorňování v reálném čase na události zabezpečení
- Dashboard pro metriky zabezpečení
- Automatická detekce anomálií
- Integrace se SIEM
- Pravidelná kontrola protokolu
- Zásady uchovávání
Obvyklé chyby zabezpečení
1 IDOR v AI Funkce
Nezabezpečené přímé odkazy na objekt, když AI přistupuje ke zdrojům
Příklad
User asks AI to "read file X" and AI has access without proper authorization checks.
2. SSRF přes LLM
Padělání požadavků na straně serveru prostřednictvím volání nástrojů AI
Příklad
Výzvy přivádějí umělou inteligenci k odesílání požadavků na interní služby.
3. Vynechání ověřování
Slabá nebo chybějící autentizace pro koncové body AI
Příklad
Koncové body rozhraní AI API bez řádných kontrol ověřování.
4. Vector DB Exposure
Nechráněná vektorová databáze s citlivými vložkami
Příklad
Zákaznická data vystavena prostřednictvím chatbotů AI
Soulad
GDPR (EU)
- Zákonný základ pro zpracování
- Minimalizace dat
- Právo na přístup/smazání
- Přenositelnost dat
CCPA (California)
- Právo vědět
- Právo smazat
- Právo na odhlášení
- | ověřte, dezinfikujte nebo správně zpracujte výstupy LLM před jejich předáním následným systémům nebo uživatelům.
Specifické pro AI
- | obsah
- Posouzení rizik AI
- Povinnosti týkající se transparentnosti
- Lidský dohled