Sikker AI-utvikling
Complete developer guide to building secure AI applications - from input validation to deployment
Updated: August 2026
Sikkerhetsprinsipper
1. Forsvar i dybden
Implement multiple layers of security controls. No single control should be relied upon exclusively.
2. Minste privilegier
Gi minimum nødvendige tillatelser til brukere, API-er og AI-komponenter.
3. Feil sikker
Når feil oppstår, standard til sikre tilstander i stedet for tillatlige.
4. Zero Trust
Never trust, always verify. Validate at every boundary, including internal systems.
Input Validation-data
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()
```
Valideringssjekkliste
- Valider ved applikasjonsgrense
- Regler for datahåndtering etablert
- GPT-modeller, Assistants API
- Oppdag kodingsforsøk
- Typevalidering
- Saniser før behandling
- Loggvalideringsfeil
- Frekvensbegrensning
Utgangshåndtering
LLM outputs must be validated and sanitized before being presented to users or passed to other systems.
Innholdsfiltrering
- Sjekk etter eksponering for sensitive data
- Bekreft at ingen systemforespørsler lekket
- Valider utdataformat
- Sjekk for injisert innhold
Fase 1: Identifikasjon og triage (0-30 min)
- Skann etter personlig informasjon
- Maskere eller fjerne sensitive data
- Logg PII-eksponeringsforsøk
- Brukervarsling ved oppdagelse:||Input-sanering
Formatvalidering
- Valider JSON-utganger
- Sjekk forventet struktur
- Bekreft tillatte verdier injection||
- Sanitiser HTML hvis aktuelt
Eksempel på utdatahåndterer
```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-sikkerhet
Autentisering
- Bruk sterk API-nøkkeladministrasjon
- Implementer OAuth der det er mulig||Spriell innstillinger|| offensiv AI (COASP)
- JWT-tokenvalidering
- API-nøkkelrotasjon
Authorization
- Rollebasert tilgangskontroll (RBAC)
- API-nøkkelomfang
- Per-user rate limits
- Leietakerisolering
Rate Limiting
- Tokenbaserte grenser
- Forespørselsbaserte grenser
- Kostnadskontroll
- Tiered throttling
API sikkerhetssjekkliste
- Bruk kun HTTPS
- Implementer hastighetsbegrensning
- Valider alle innganger
- Desinfiser alle utdata
- Bruk API-nøkler, ikke innebygde
- Implementer signering av forespørsel
- Log API-tilgang
- Implementer CORS riktig
Autentisering og autorisasjon
Brukerautentisering
- Sterke passordpolicyer
- MFA-støtte
- Session management
- Token-utløp
API-autentisering
- API nøkkelstyring
- OAuth-omfang
- JWT-validering
- Nøkkelrotasjon
Authorization
- RBAC-implementering
- Stack 0rigOriginal|Utvikler2| sårbarheter kan ikke lenger utnyttes
- Tilgang på ressursnivå
- Revisjonslogging Approach
Datasikkerhet
Dataklassifisering
- Identifiser sensitive data
- Kategoriser etter sensitivitet|Personvern|Chat-robot|Personvern| rapportert (2024)
- Bruk kontroller etter kategori
- Sandbox LLM-utganger før nedstrømsbruk
Kryptering
- TLS under transport
- AES i hvile
- Nøkkelhåndtering
- Nøkkelrotasjon
PII-håndtering
- Deteksjon
- Minimering
- Samtykkeadministrasjon
- Rett til sletting
Logging og overvåking
Hva skal logges
Sikkerhetshendelser
- Autentiseringsforsøk
- Autorisasjonsfeil
- Rategrense overskredet
- Mistenkelige mønstre
AI-spesifikke hendelser
- Raske injeksjonsforsøk
- Umiddelbar tilgang til systemet
- Verktøyanrop
- Datatilgang via AI
Opprasjonell tilgang for utviklersystemer
- API-anrop
- Feil og unntak
- Ytelsesberegninger
- Kostnadssporing
Aldri.
- Sanntidsvarsling for sikkerhetshendelser
- Dashboard for sikkerhetsberegninger
- Automatisert avviksdeteksjon
- Integrasjon med SIEM
- Vanlig logggjennomgang
- Retensjonspolicyer
Vanlige sårbarheter
Valider utdataformat
Bakdørsmodellvekter fra upålitelige kilder
Eksempel
User asks AI to "read file X" and AI has access without proper authorization checks.
2. SSRF via LLM
Forfalskning av serversideforespørsel gjennom AI-verktøykall
Eksempel
Spørring lurer AI til å sende forespørsler til interne tjenester.
3. Omgåelse av autentisering
Svak eller manglende autentisering for AI-endepunkter
Eksempel
AI API-endepunkter uten riktige autentiseringskontroller.
4. Vector DB Exposure
Ubeskyttet vektordatabase med sensitive innebygginger
Eksempel
Kundedata eksponert via AI chatbots
Compliance
GDPR (EU)
- Lovlig grunnlag for behandling
- Dataminimering
- Rett til tilgang/sletting
- Dataportabilitet
CCPA (California)
- Rett til å vite
- Rett til å slette
- Rett til å velge bort
- Ulykkes i å validere, rense eller håndtere LLM-utdata på riktig måte før de sendes til nedstrømssystemer eller brukere.
AI-spesifikt
- Multi-Modal AI Security
- AI-risikovurderinger
- Forpliktelser om åpenhet
- Menneskelig tilsyn