| 1 |
<?php |
| 2 |
// security.php |
| 3 |
// Security headers and settings |
| 4 |
ini_set('display_errors', '0'); |
| 5 |
ini_set('display_startup_errors', '0'); |
| 6 |
error_reporting(E_ALL); |
| 7 |
ini_set('session.cookie_httponly', 1); |
| 8 |
ini_set('session.cookie_secure', 1); |
| 9 |
ini_set('session.cookie_samesite', 'Strict'); |
| 10 |
ini_set('session.use_strict_mode', 1); |
| 11 |
ini_set('session.use_only_cookies', 1); |
| 12 |
ini_set('session.gc_maxlifetime', 3600); |
| 13 |
|
| 14 |
// Set secure headers |
| 15 |
header("Content-Security-Policy: " . |
| 16 |
"default-src 'self'; " . |
| 17 |
"style-src 'self' 'unsafe-inline'; " . |
| 18 |
"img-src 'self' data: ; " . |
| 19 |
"frame-ancestors 'none'; " . |
| 20 |
"form-action 'self';" |
| 21 |
); |
| 22 |
header("X-Content-Type-Options: nosniff"); |
| 23 |
header("X-Frame-Options: DENY"); |
| 24 |
header("X-XSS-Protection: 1; mode=block"); |
| 25 |
header("Referrer-Policy: same-origin"); |
| 26 |
header("Permissions-Policy: geolocation=(), camera=(), microphone=()"); |
| 27 |
|
| 28 |
// Set secure cookie parameters |
| 29 |
ini_set('session.cookie_domain', ''); |
| 30 |
ini_set('session.cookie_path', '/'); |
| 31 |
ini_set('session.cookie_lifetime', 0); |
| 32 |
|
| 33 |
// Start session if needed |
| 34 |
if (session_status() === PHP_SESSION_NONE) { |
| 35 |
session_start(); |
| 36 |
} |
| 37 |
?> |