Sikker AI-udvikling
Complete developer guide to building secure AI applications - from input validation to deployment
Updated: August 2026
Sikkerhedsprincipper
1. Forsvar i dybden
Implement multiple layers of security controls. No single control should be relied upon exclusively.
overtrædelser af hastighedsgrænser
Giv minimum nødvendige tilladelser til brugere, API'er og AI-komponenter.
3. Fail Secure
Når der opstår fejl, skal du som standard bruge sikre tilstande frem for tilladelige.
4. Zero Trust
Never trust, always verify. Validate at every boundary, including internal systems.
Inputvalideringsdata
All user input must be validated and sanitized before processing. This is your first line of defense against prompt injection and other attacks.
| kontroller
```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()
```
Valideringstjekliste
- Valider ved applikationsgrænse
- Datahåndteringsregler etableret
- GPT-modeller, Assistants API
- Opdagelse af kodningsforsøg
- Typevalidering
- Saniser før behandling
- Logvalideringsfejl
- Ratebegrænsende
Outputhåndtering
LLM outputs must be validated and sanitized before being presented to users or passed to other systems.
Indholdsfiltrering
- Tjek for eksponering af følsomme data
- Bekræft, at ingen systemprompter er lækket
- Valider outputformat
- Tjek for injiceret indhold
Fase 1: Identifikation og triage (0-30 min)
- Scan for personlige oplysninger
- Masker eller redaktér følsomme data
- Log PII-eksponeringsforsøg
- Brugermeddelelse ved detektering
Formatvalidering
- Valider JSON-output
- Tjek forventet struktur
- Bekræft tilladte værdier injection||Spørgsmål
- Saniser HTML, hvis det er relevant
Output Handler Eksempel
```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
```
API-sikkerhed
Godkendelse
- Brug stærk API-nøglestyring
- Implementer OAuth, hvor det er muligt||SprielleM. offensiv AI (COASP)
- JWT-tokenvalidering
- API-nøglerotation
Authorization
- Rolebaseret adgangskontrol (RBAC)
- API-nøgleomfang
- Per-user rate limits
- Lejerisolering
Rate Limiting
- Token-baserede grænser
- Forespørgselsbaserede grænser
- Omkostningskontrol
- Tiered throttling
API-sikkerhedstjekliste
- Brug kun HTTPS
- Implementer hastighedsbegrænsning
- Valider alle input
- Desinficer alle output
- Brug API-nøgler, ikke indlejrede
- Implementer signering af anmodning
- Omkostningssporing
- Implementer CORS korrekt
Autentificering og autorisation
Brugergodkendelse
- Stærke adgangskodepolitikker
- MFA-support
- Sessionsstyring
- Token-udløb
API-godkendelse
- API nøglestyring
- OAuth-omfang
- JWT-validering
- Nøglerotation
Authorization
- RBAC-implementering
- Stack 0riginal|Overrigsflow
- Adgang på ressourceniveau
- Audit-logning Approach
Datasikkerhed
Dataklassificering
- Identificer følsomme data
- Kategoriser efter følsomhed|Virksomhed|Privatliv|Kategoriser efter følsomhed|Virksomhed| rapporteret (2024)
- Anvend kontroller efter kategori
- Sandbox LLM-output før downstream-brug
Kryptering
- TLS i transit
- AES i hvile
- Nøglestyring
- Nøglerotation
PII-håndtering
- Detektion
- Minimering
- Samtykkestyring
- Ret til sletning
Logføring og overvågning
Hvad skal logges
Sikkerhedshændelser
- Godkendelsesforsøg
- Autoriseringsfejl
- Satsgrænse overskredet
- Mistænkelige mønstre
AI-specifikke hændelser
- Prompte injektionsforsøg
- Systemprompt-adgang
- Værktøjsankaldelser
- | adgang via AI
Operational adgang til hændelsessystemer
- API-opkald
- Fejl og undtagelser
- Performance-metrics
- Co-counting
Aldrig.
- Realtidsadvarsling for sikkerhedshændelser
- Dashboard for sikkerhedsmålinger
- Automatiseret anomalidetektion
- Integration med SIEM
- Regelmæssig loggennemgang
- Retentionspolitikker
Almindelige sårbarheder
Valider outputformat
Bagdørsmodelvægte fra upålidelige kilder
Eksempel
User asks AI to "read file X" and AI has access without proper authorization checks.
2. SSRF via LLM
Server-side-anmodningsforfalskning via AI-værktøjsopkald
Eksempel
Spørgsmål tricker AI til at lave anmodninger til interne tjenester.
3. Authentication Bypass
Svag eller manglende godkendelse for AI-endepunkter
Eksempel
AI API-endepunkter uden ordentlige godkendelsestjek.
4. Vector DB Exposure
Ubeskyttet vektordatabase med følsomme indlejringer
Eksempel
Kundedata eksponeret via AI-chatbots
Compliance
GDPR (EU)
- Lovligt grundlag for behandling
- Dataminimering
- Ret til adgang/sletning
- Dataportabilitet
CCPA (California)
- Ret til at vide
- Ret til at slette
- Ret til at fravælge
- Ulykkes med at validere, rense eller håndtere LLM-output korrekt, før de sendes til downstream-systemer eller brugere.
AI-specifikke
- Multi-Modal AI-sikkerhed
- AI-risikovurderinger
- Forpligtelser til gennemsigtighed
- Menneskeligt tilsyn