Въведение в уеб сигурността
Сигурността е критичен аспект на уеб разработката. Правилната конфигурация на security headers и HTTPS защитава потребителите и подобрява SEO.
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) е една от най-честите уязвимости. Защита:
- Escape на потребителски вход
- Content-Security-Policy header
- HTTPOnly cookies
- Input validation
CSRF Protection
Cross-Site Request Forgery се предотвратява с:
- CSRF tokens
- SameSite cookies
- Проверка на 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