a.
mcp.altay.socialMCP & Prompt Katalogu
Rules
Öne çıkan·v1.0.0·2026-04-22

Web Güvenlik Kuralları

Web uygulamaları için güvenlik baseline — OWASP Top 10 karşılıkları, auth, input validation, secret yönetimi, CSP, CORS, rate limit, logging. CLAUDE.md / .cursorrules içeriği olarak kullanılır.

securityowaspauthxsscsrfrulesclaude-md

İçerik

Bu içeriği projenin CLAUDE.md / AGENTS.md / .cursorrules dosyasına yapıştır.


Web Güvenlik Baseline

Bu kurallar her web servisi için minimum güvenlik disiplini. OWASP Top 10 (2021) kategorilerine karşılık gelir; uygulamaya özel tehdit modeli ayrıca yapılır.

Kimlik doğrulama (Authentication)

  • Password hashing: bcrypt (cost 12+), argon2id (tercih), veya scrypt. MD5/SHA1/SHA256 yasak password için.
  • Password minimum: 12+ karakter, dictionary / breached password kontrolü (HaveIBeenPwned API).
  • MFA/2FA sensitive hesap için (admin, finansal). TOTP (Google Authenticator), WebAuthn/FIDO2.
  • Session: JWT veya opaque token. Opaque token daha güvenli (server revoke edebilir).
  • JWT expiration kısa (< 1 saat). Refresh token ayrı, rotate-on-use.
  • Login throttle: IP bazlı + account bazlı. 5-10 yanlış deneme sonrası captcha / geçici lock.
  • Password reset token single-use, 1 saat expiration, email gönderim asenkron.
  • "Remember me" uzun-ömürlü session only if implicit re-auth acceptable.

Yetkilendirme (Authorization)

  • Authentication ≠ Authorization — kim olduğu ve ne yapabildiği ayrı katman.
  • Default deny: explicit allow olmadan erişim yok.
  • IDOR önleme: her resource fetch'inde ownership check (WHERE user_id = current_user.id).
  • Scope-based (orders:read, orders:write) basit role-based'den esnek.
  • Privilege escalation check: bir user kendisini admin yapamaz. Role değişimi ayrı endpoint + audit.
  • Admin paneli ayrı host / ayrı auth mekanizması tercih.

Input validation

  • Her input şema ile validate (Zod, Pydantic, express-validator). "Trust nothing" policy.
  • Boundary'ler: HTTP body, query, header, cookie, hatta iç servis çağrısı.
  • Whitelist, blacklist değil. "Allowed characters" tanımla, "banned" değil.
  • Type coercion dikkat: "true" string vs true boolean farkını bilinçli handle.
  • File upload:
    • MIME type check (server-side — client false söyler)
    • Extension kısıtla
    • Size limit
    • Virus scan (ClamAV, VirusTotal)
    • Storage path kontrollü (path traversal önlenmiş)
  • Regex ile validation: ReDoS'a dikkat (catastrophic backtracking). Basit tut.

Injection (SQL, NoSQL, Command, LDAP)

  • Parametreli query her zaman:
    ✅ db.query("SELECT * FROM users WHERE id = $1", [userId])
    ❌ db.query(`SELECT * FROM users WHERE id = '${userId}'`)
    
  • ORM kullanımında string concat yasak. raw() kullanımı gerekçelenir.
  • Command execution yasak user input ile (exec, child_process.exec). Gerçekten gerekliyse:
    • Whitelist'li command + args
    • Shell=false (direct spawn)
    • Timeout
  • NoSQL injection: MongoDB $where operator user input'tan yasak. Object injection ({$gt: ''}) filter'lı.
  • LDAP injection: escape utilities kullan (ldapescape).

XSS (Cross-Site Scripting)

  • Default escape: modern template engine'ler (React, Vue, Jinja2) otomatik. {{ }} = escape, {{{ }}} / dangerouslySetInnerHTML = risk.
  • User content: HTML olarak render edilecekse sanitize (DOMPurify, Bleach).
  • URL attribute'ları (href, src) validate:
    if (url.startsWith("javascript:")) block
    
  • Content Security Policy (CSP) — inline script/style kısıtla:
    Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-...'; style-src 'self' 'nonce-...'
    
  • Unsafe sink'ler: innerHTML, document.write, eval, setTimeout(string) — yasak.

CSRF (Cross-Site Request Forgery)

  • Cookie-based session kullanıyorsan CSRF var. Token-based (Authorization header) genelde güvenli.
  • SameSite cookie: Strict veya Lax. None sadece HTTPS + gerekçeli.
  • CSRF token form'larda. Double-submit cookie ya da synchronizer token pattern.
  • State-changing GET yasak — GET idempotent + no side effect. Mutation POST/PUT/DELETE.

HTTPS / TLS

  • HTTPS zorunlu. HTTP request → 301 redirect veya 403.
  • HSTS header:
    Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    
  • TLS 1.2 minimum, 1.3 tercih. Eski cipher suite'leri kapat.
  • Certificate Let's Encrypt + auto-renew, monitoring (30 gün önce alarm).
  • Mixed content yasak: HTTPS sayfa içinde HTTP kaynak yükleme.

CORS

  • Origin whitelist:
    Access-Control-Allow-Origin: https://app.example.com  (specific)
    
  • * + credentials yasak — tarayıcı reddeder + tasarımsal hata.
  • Preflight: OPTIONS cache'i (Access-Control-Max-Age: 86400) gereksiz preflight'ları azaltır.
  • Headers: Authorization, Content-Type explicit allow.

Secret yönetimi

  • Kod'da secret yasak — env var, secret manager (AWS Secrets Manager, HashiCorp Vault, Doppler).
  • .env git-ignored. .env.example template'i commit.
  • Secret rotation: periyodik (90 gün) veya olay sonrası (sızma şüphesi).
  • Log'da secret yasak: token, password, PII, kart bilgisi sızmaz. Structured log'da redact filtresi.
  • Error message'da secret yasak: stack trace production'da kullanıcıya dönmez.
  • Git history scan: GitHub secret scanning, truffleHog, gitleaks CI'da.

Rate limiting

  • Her public endpoint'te — DoS, brute force, scraping karşı.
  • Tier bazlı: anon < auth < premium.
  • Sensitive endpoint tighter: login, password reset, signup, email verification.
  • 429 response:
    Retry-After: 60
    X-RateLimit-Reset: 1700000000
    
  • IP bazlı + user ID bazlı + device fingerprint (karmaşık senaryo).

Headers

Her HTTP response'ta:

Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY            (veya CSP frame-ancestors)
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
Content-Security-Policy: <proje özel>

Session management

  • Cookie flags: Secure, HttpOnly, SameSite=Strict/Lax.
  • Session timeout: idle (30 dk), absolute (8-24 saat).
  • Logout gerçek — server tarafı token invalidate edilir.
  • Session fixation önleme: login sonrası session ID yenile.
  • Concurrent sessions: kullanıcı aktif session'larını görebilir, revoke edebilir.

Dependency güvenliği

  • Lockfile commit edilir (package-lock.json, uv.lock).
  • Auto audit CI'da:
    • npm audit --audit-level=high
    • pip-audit
    • govulncheck
  • Dependency update: Dependabot / Renovate. Critical vulnerability → fast-track PR.
  • Unmaintained dependency: 18+ ay commit yoksa alternatif ara.
  • Supply chain: major dependency için SBOM, sigstore signing (ilerici).

Logging & monitoring

  • Security event'ler log'a:
    • Login success/failure
    • Password change, 2FA setup
    • Permission grant/revoke
    • Admin action
    • Large data export
  • PII redact log'da — email prefix mask (a***@example.com), IP hash'li vb.
  • Tamper-evident: log alterasyonu tespit edilebilir (append-only, S3 Object Lock).
  • Alert: anomali (failed login spike, privilege escalation pattern).

API security

  • Authentication her endpoint'te (public hariç).
  • Rate limit mutlaka.
  • Error response detail leak etmez:
    ✅ "Invalid credentials"
    ❌ "User exists but password wrong" (enumeration)
    
  • Enumeration önleme: login / password reset timing uniform.
  • Resource ownership her GET/PATCH/DELETE'te.

File handling

  • Upload path kontrollü../ yasak, user dir isolation.
  • Serving — executable MIME (html, js, php) upload edilmişse X-Content-Type-Options: nosniff + Content-Disposition: attachment.
  • Antivirus scan sensitive upload için.
  • Size limit config'te net.
  • Temp file cleanup job'u — sızıntı önleme.

Third-party entegrasyonu

  • OAuth redirect URL whitelist.
  • Webhook signature verification:
    HMAC-SHA256(secret, timestamp + body) == X-Webhook-Signature
    
  • SSRF önleme: user-supplied URL fetch ederken whitelist / block internal IP (169.254, 10.0.0.0/8, 127.0.0.1).
  • OAuth state parameter CSRF için zorunlu.

Privacy & compliance

  • PII envanter: hangi veriyi neden tutuyoruz, ne kadar.
  • Right to deletion (GDPR Article 17) — delete endpoint'i implemente et.
  • Data export (GDPR Article 20) — kullanıcı kendi verisini JSON olarak alabilsin.
  • Retention policy — veriye ömür biç.
  • Cookie consent eğer tracking / analytics varsa.

Security testing

  • Automated:
    • SAST (CodeQL, Semgrep)
    • DAST (OWASP ZAP)
    • Dependency scan (npm audit, Snyk)
    • Container scan (Trivy)
  • Manual: kritik endpoint için adversarial test (auth bypass, IDOR, injection deneme).
  • Bug bounty / responsible disclosure policy.

Incident response

  • Playbook hazır:
    • Credential leak: kimleri rotate, kullanıcı bilgilendirme
    • Database breach: notification, forensics
    • Account compromise: mass password reset
  • Contact list güncel: on-call, legal, PR.

Yasak listesi (özet)

  • Plain-text password storage
  • MD5 / SHA1 password hash
  • SQL string concat
  • eval(), exec() user input ile
  • Secret kod içinde
  • Access-Control-Allow-Origin: * + credentials
  • Error response'da stack trace
  • HTTP prod'da (HTTPS zorunlu)
  • innerHTML user content ile
  • Command injection vektörü
  • Unsafe deserialize (pickle, unserialize)
  • CSRF korumasız cookie-based endpoint
  • JWT secret changeme / default değer
  • Test verisi prod'da
  • Auth-less admin endpoint
  • Dependency update 6+ ay ihmal

Commit

Conventional Commits. Güvenlik fix için fix(security): ... ve private disclosure akışına dikkat (bazı fixler public olmadan önce yayılmamalı — coordinated disclosure).