Въведение в уеб сигурността

Сигурността е критичен аспект на уеб разработката. Правилната конфигурация на security headers и HTTPS защитава потребителите и подобрява SEO.

Security

HTTPS

HTTPS криптира комуникацията между браузъра и сървъра. От 2014 е ранкинг фактор в Google.

SSL/TLS конфигурация

server {
    listen 443 ssl http2;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;
}

Security Headers

Content-Security-Policy (CSP)

Content-Security-Policy: 
  default-src self;
  script-src self unsafe-inline https://cdn.example.com;
  style-src self unsafe-inline;
  img-src self data: https:;
  font-src self https://fonts.gstatic.com;
  connect-src self https://api.example.com;
  frame-ancestors none;

Nginx Security Headers

add_header X-Frame-Options SAMEORIGIN always;
add_header X-Content-Type-Options nosniff always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy strict-origin-when-cross-origin always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

HSTS (HTTP Strict Transport Security)

HSTS казва на браузъра винаги да използва HTTPS. Header:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Cookies Security

Set-Cookie: session=abc123; Secure; HttpOnly; SameSite=Strict

Secure: Само през HTTPS
HttpOnly: Не е достъпна от JavaScript
SameSite: Защита от CSRF атаки

XSS Prevention

Cross-Site Scripting (XSS) е една от най-честите уязвимости. Защита:

  1. Escape на потребителски вход
  2. Content-Security-Policy header
  3. HTTPOnly cookies
  4. Input validation

CSRF Protection

Cross-Site Request Forgery се предотвратява с:

  1. CSRF tokens
  2. SameSite cookies
  3. Проверка на Referer header

SQL Injection Prevention

В Go използваме prepared statements:

stmt, err := db.Prepare("SELECT * FROM users WHERE id = ?")
stmt.QueryRow(userId)

Security Checklist

  • HTTPS е активен навсякъде
  • HSTS е конфигуриран
  • CSP header е зададен
  • X-Frame-Options предотвратява clickjacking
  • Cookies имат security flags
  • Input е валидиран и escaped
  • SQL queries използват prepared statements

Заключение

Сигурността не е опция - тя е изискване. Правилната конфигурация защитава потребителите и изгражда доверие.


Брой думи: 3,045