LLM entegrasyonlarını güvenli hale getirmek için çok katmanlı bir savunma stratejisi benimsenmelidir. Her katmanda farklı kontroller uygulanmalı ve AI'ya körü körüne güvenilmemelidir.
API Access Control
class SecureLLMAPI:
def __init__(self):
self.rate_limiter = RateLimiter()
self.auth_service = AuthenticationService()
def process_request(self, user_id, prompt, api_call=None):
if not self.auth_service.is_authenticated(user_id):
raise AuthenticationError("User not authenticated")
if not self.rate_limiter.allow_request(user_id):
raise RateLimitError("Too many requests")
validated_prompt = self.validate_input(prompt)
if api_call:
if not self.authorize_api_call(user_id, api_call):
raise AuthorizationError("API call not authorized")
return self.call_llm(validated_prompt)
def validate_input(self, prompt):
dangerous_patterns = [
r"ignore\s+all\s+previous\s+instructions",
r"you\s+are\s+now\s+(DAN|jailbroken)",
r"forget\s+everything\s+above",
r"disregard\s+your\s+training"
]
for pattern in dangerous_patterns:
if re.search(pattern, prompt, re.IGNORECASE):
logger.warning(f"Potential injection detected: {pattern}")
return prompt
Output Sanitization
import html
import re
from urllib.parse import quote
class OutputSanitizer:
def __init__(self):
self.html_sanitizer = HTMLSanitizer()
self.js_patterns = [
r'<script[^>]*>.*?</script>',
r'javascript:',
r'on\w+\s*=',
r'eval\s*\(',
r'fetch\s*\('
]
def sanitize_llm_output(self, llm_response):
sanitized = html.escape(llm_response)
for pattern in self.js_patterns:
sanitized = re.sub(pattern, '[BLOCKED]', sanitized, flags=re.IGNORECASE)
sanitized = self.sanitize_urls(sanitized)
self.set_csp_headers()
return sanitized
def sanitize_urls(self, content):
url_pattern = r'https?://[^\s<>"]+'
def validate_url(match):
url = match.group(0)
if self.is_suspicious_domain(url):
return '[URL_BLOCKED]'
return url
return re.sub(url_pattern, validate_url, content)
Sensitive Data Protection
Data Protection Prensipleri:
- Least Privilege: LLM'e sadece gerekli minimum veri erişimi verin
- Data Classification: Hassas verileri LLM'den uzak tutun
- Access Monitoring: LLM'in veri erişimlerini logla ve izle
- Regular Testing: Model'in hassas bilgi sızıntısını düzenli test edin
Defense in Depth: Tek bir kontrol mekanizmasına güvenmeyin. Input validation, output sanitization, access control, monitoring ve incident response planlarını birlikte kullanın.