v3.1.0Secure by Default
Sicherheit in VelinScript
Sicherheit ist kein Feature, sondern eine Notwendigkeit. VelinScript verfolgt den Ansatz "Secure by Default" - unsichere Muster kompilieren oft gar nicht erst oder werden durch die Standardeinstellungen verhindert.
Secure by Default Philosophie
VelinScript wählt immer die sicherste Variante als Standard. SQL Injection ist strukturell unmöglich, Passwörter werden mit Argon2id gehasht, und der SAST-Scanner warnt proaktiv vor Sicherheitslücken.
1. Authentifizierung & Autorisierung
VelinScript integriert Authentifizierung direkt in das Web-Framework, um sicherzustellen, dass Sicherheitslogik nicht vergessen wird.
Authentifizierung mit @Auth
Der einfachste Weg, einen Endpunkt zu schützen. VelinScript validiert Tokens automatisch.
@Controller("/api/profile")
struct ProfileController {
// Nur für eingeloggte Benutzer erreichbar
@Auth
@GET("/")
fn getProfile(user: User): User {
return user; // 'user' wird automatisch injiziert
}
}RBAC (Rollenbasiert)
@Auth
@Role("admin")
@GET("/users")
fn listUsers(): List<User> { ... }ABAC (Attributbasiert)
@Authorize(|user, req| {
let doc = db.find(Doc, req.params.id);
return doc.ownerId == user.id;
})Manuelle Token-Verwaltung
@POST("/login")
fn login(creds: LoginDto): LoginResponse {
let user = db.find(User, { email: creds.email });
if (!user || !security.verifyPassword(creds.password, user.passwordHash)) {
throw HttpError.Unauthorized("Falsche Zugangsdaten");
}
let auth = AuthService.new();
let accessToken = auth.createToken({ sub: user.id, roles: user.roles });
return LoginResponse { accessToken, refreshToken: auth.createRefreshToken(user.id) };
}2. Schutz vor Angriffen
Rate Limiting
// Maximal 5 Login-Versuche pro Minute pro IP
@RateLimit(limit: 5, window: "1m")
@POST("/login")
fn login(...) { ... }
// Manuelles Throttling in der Logik
utils.throttle("sms_" + phone, "30s", || {
smsGateway.send(phone, "Code: 1234");
});SQL Injection Prävention
VelinScript nutzt intern Prepared Statements. SQL Injection ist strukturell unmöglich.
// SICHER: Parameter werden automatisch escaped
db.findMany(User, { name: userInput });
// SICHER: Auch bei Raw Queries durch Parameter-Binding
db.execute("SELECT * FROM users WHERE name = ?", [userInput]);3. Verschlüsselung und Hashing
Argon2id Hashing
Standard für Passwörter (GPU-resistent).
let hash = security.hashPassword(pwd);
let isValid = security.verifyPassword(input, hash);AES-256-GCM
Verschlüsselung für sensible Daten.
let enc = crypto.encrypt(data, key);
let plain = crypto.decrypt(enc, key);4. AI-Code-Sicherheit
NEU v3.0.1VelinScript führt umfassende Sicherheitsmaßnahmen für AI-generierten Code ein, um die Integrität Ihres Systems zu gewährleisten.
Prompt Sanitization
Verhindert Prompt-Injection ("Ignore previous instructions") durch automatische Validierung aller LLM-Inputs.
AI-Sandbox
AI-Code läuft in einer isolierten Sandbox. Kein Zugriff auf Filesystem, Systembefehle oder Netzwerk.
AI-Code-Review
Automatischer Review auf Syntax, Typen, Komplexität und gefährliche Patterns vor der Integration.
Aktivierung via CLI
velin compile --input app.velin \
--ai-codegen \
--ai-code-review \
--ai-sandbox \
--ai-provider openai5. Sicherheitsscanner (SAST)
Der integrierte Scanner analysiert Ihren Quellcode auf bekannte Sicherheitsmuster, *bevor* Sie deployen.
# Gesamtes Projekt scannen
velin scan
# Ausgabebeispiel:
[CRITICAL] Hardcoded Secret found in src/config.velin:12
let apiKey = "sk-1234567890abcdef";
-> Use config.get("API_KEY") instead.Hardcoded Secrets
Findet API-Keys & Passwörter
ReDoS Schutz
Erkennt gefährliche Regex-Patterns
Fehlende Auth
Warnt vor ungeschützten Routen
Veraltete Libs
Prüft auf bekannte CVEs