Fil-qosor: Headers tas-sigurtà huma struzzjonijiet tas-server tal-web lill-browser li jipproteġu lill-viżitaturi minn attakki bħal Cross-Site Scripting, clickjacking u konnessjonijiet mhux ikkriptati. L-aktar importanti huma HSTS, Content-Security-Policy, X-Content-Type-Options, protezzjoni kontra frejms barranin, Referrer-Policy u Permissions-Policy. Huma tisħiħ sensat, imma ma jissostitwixxux aġġornamenti fuq is-server.
X'jagħmlu l-headers tas-sigurtà u x'ma jagħmlux
F'kull ftuħ ta' paġna, is-server tal-web jibgħat, minbarra l-kontenut, ukoll headers. Xi wħud minnhom jikkontrollaw funzjonijiet tas-sigurtà tal-browser. Hekk jista' jiġi stabbilit, pereżempju, li paġna titgħabba biss permezz ta' HTTPS jew li l-browser ma jesegwix skripts minn domains barranin.
Għall-operaturi l-klassifikazzjoni hija importanti: headers jipproteġu l-ewwel nett lill-viżitaturi, pereżempju minn teħid ta' sessions jew minn formoli manipulati. Ma jagħlqux vulnerabbiltajiet fuq is-server. Dgħufija f'PHP, fis-CMS jew f'estensjoni tibqa', ikunu kemm ikunu mseħħin tajjeb il-headers. Flimkien ma' kodiċi nadif, madankollu, jillimitaw b'mod ċar il-konsegwenzi ta' ħafna żbalji.
L-aktar headers tas-sigurtà importanti fil-qosor
| Header | Għan | Rakkomandazzjoni bħala punt tat-tluq |
|---|---|---|
| Strict-Transport-Security (HSTS) | jinforza HTTPS għal ftuħ futur | max-age=31536000; includeSubDomains |
| Content-Security-Policy (CSP) | jiffissa sorsi permessi għal skripts, immaġini, frejms | individwali, l-ewwel bħala Report-Only |
| X-Content-Type-Options | jipprevjeni li l-browser jaħseb it-tipi tal-fajls | nosniff |
| X-Frame-Options jew CSP frame-ancestors | jipprevjeni l-inkorporazzjoni f'paġni barranin (clickjacking) | SAMEORIGIN jew frame-ancestors 'self' |
| Referrer-Policy | jillimita liema indirizz jingħadda lil paġni oħra | strict-origin-when-cross-origin |
| Permissions-Policy | jitfi funzjonijiet tal-browser bħall-kamera jew il-post | ippermettu biss funzjonijiet meħtieġa |
HSTS għandkom tiffissawh biss meta s-subdomains kollha jintlaħqu b'mod affidabbli permezz ta' HTTPS. Il-browser jiftakar l-istruzzjoni għaż-żmien indikat; żball allura ma jistax jitnaqqas minnufih. Ibdew jekk meħtieġ b'tul qasir u żiduh wara testijiet b'suċċess. L-għażla addizzjonali preload tniżżel id-domain b'mod permanenti f'listi tal-manifatturi tal-browsers u għandha tiġi ffissata biss wara verifika bir-reqqa.
Headers, barra minn hekk, mhumiex l-uniku post fejn il-browser joffri protezzjoni. Cookies għandhom iġorru l-attributi Secure, HttpOnly u SameSite, biex is-sessions ma jittieħdux permezz ta' konnessjonijiet mhux ikkriptati jew skripts. Kif tissettjaw dan f'PHP tiddeskrivi l-gwida dwar is-sessions.
Issettjaw headers tas-sigurtà f'Nginx
F'Nginx il-headers jappartjenu fil-blokk server tal-websajt rispettiva. L-addizzjoni always tiżgura li jintbagħtu wkoll f'paġni ta' żball.
server {
# ...
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src 'self' data:; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'" always;
server_tokens off;
}
Partikolarità ta' Nginx: jekk blokk location jiffissa istruzzjonijiet add_header proprji, il-headers mill-blokk server ma jittieħdux hemmhekk. Ivverifikaw għalhekk ukoll sottopaġni u fajls statiċi. Aktar tisħiħ għal din il-kombinazzjoni tiddeskrivi Kif tassiguraw Nginx ma' PHP-FPM.
Issettjaw headers tas-sigurtà f'Apache
Taħt Apache teħtieġu l-modulu mod_headers. L-istruzzjonijiet jappartjenu fil-VirtualHost jew, jekk ma jkunx hemm aċċess għalih, f'.htaccess.
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Content-Security-Policy-Report-Only "default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'"
</IfModule>
ServerTokens Prod
ServerSignature Off
ServerTokens u ServerSignature jappartjenu fil-konfigurazzjoni prinċipali. Jipprevjenu li s-server isemmi l-verżjoni eżatta tiegħu f'tweġibiet u f'paġni ta' żball. Fil-php.ini tiksbu l-istess għal PHP b'expose_php = Off.
Introduċu Content-Security-Policy pass wara pass
Il-Content-Security-Policy hija l-aktar header effettiv, imma wkoll l-aktar ambizzjuż. Tiffissa minn liema sorsi jistgħu jitgħabbew skripts, stylesheets, immaġini, tipi ta' ittri u frejms. Jekk skript introdott jitgħabba minn domain barrani, il-browser jimblokkah.
Websajts moderni spiss jinkorporaw għodod ta' analiżi, fornituri tal-ħlas, servizzi tal-mapep jew vidjows. Politika stretta żżejjed allura twaqqaf funzjonijiet. Aqbdu għalhekk f'stadji:
- Ibdew l-ewwel b'
Content-Security-Policy-Report-Only. Il-browser jirrapporta ksur fil-console tal-iżviluppatur jew lil indirizz ta' ġbir, imma ma jimblokka xejn. - Irreġistraw is-sorsi kollha meħtieġa u ippermettuhom b'mod immirat, minflok ma tużaw placeholders ġenerali.
- Ittrasferixxu skripts inline pass wara pass f'fajls jew agħtuhom nonces, biex jista' jitħalla barra
'unsafe-inline'. - Biss wara fażi tat-test mingħajr messaġġi mhux mistennija aqilbu għal
Content-Security-Policy.
Is-CSP tikkumplimenta escaping nadif fil-kodiċi, imma ma tissostitwihx. Kif tassiguraw sewwa l-outputs f'PHP jinsab fil-gwida Kif tevitaw Cross-Site Scripting f'PHP.
Ivverifikaw il-headers u evitaw żbalji tipiċi
Wara kull bidla għandkom tivverifikaw jekk il-headers verament jaslu. Dan jirnexxi mingħajr għodod addizzjonali b'curl:
# Ittestjaw il-konfigurazzjoni u erġgħu tgħabbuha
nginx -t && systemctl reload nginx
# Uri l-headers tal-paġna ewlenija u ta' fajl statiku
curl -sI https://www.example.de/ | grep -iE 'strict|content-security|x-content|x-frame|referrer|permissions|server'
curl -sI https://www.example.de/favicon.ico | grep -iE 'strict|x-content'
Żbalji tipiċi huma headers iffissati darbtejn, meta s-server tal-web u l-applikazzjoni jibagħtu l-istess headers, CDN quddiem li jneħħi jew jegħleb headers, u headers li jidhru biss fuq il-paġna ewlenija, imma mhux f'ridirezzjonijiet jew paġni ta' żball. Ivverifikaw ukoll wara aġġornamenti tas-CMS jew ta' estensjonijiet tas-sigurtà jekk il-headers inbidlux.
Iffissaw għalhekk post wieħed fejn il-headers jinżammu, l-aħjar is-server tal-web jew is-servizz li jinsab quddiem. Ħafna estensjonijiet tas-CMS joffru wkoll issettjar għal headers tas-sigurtà. Dan huwa komdu, imma faċilment iwassal għal dikjarazzjonijiet doppji jew kontradittorji, jekk is-server jiffissa wkoll headers. Għal testijiet individwali jaqblu wkoll l-għodod tal-iżviluppatur tal-browser: fit-tab tan-netwerk tarawh l-headers tat-tweġiba għal kull talba, u l-console turi ksur tal-Content-Security-Policy.
Kif tgħin PHP SOS b'mod konkret?
- Nivverifikaw il-headers attwali tal-websajts kollha tagħkom, anke wara CDN u proxy, u nuru lakuni u kontradizzjonijiet.
- Niffissaw il-headers ċentralment fis-server tal-web fil-qafas tat-Tisħiħ tas-server u nittestjaw il-paġna ewlenija, sottopaġni u paġni ta' żball.
- Nintroduċu l-Content-Security-Policy fil-modalità Report-Only, nevalwaw ir-rapporti u nattivawha wara qbil.
- Fejn bidliet fil-kodiċi ma jkunux possibbli minnufih, nikkumplimentaw il-protezzjoni b'regoli WAF u patching virtwali.
Mistoqsijiet frekwenti
X'inhuma l-headers tas-sigurtà?
Headers tas-sigurtà huma dettalji addizzjonali fit-tweġiba tas-server tal-web. Jgħidu lill-browser, pereżempju, li għandu jgħabbi l-paġna biss permezz ta' HTTPS, ma jesegwixxix skripts barranin jew ma jurix il-paġna f'frejms barranin. Jipproteġu fuq kollox lill-viżitaturi.
Headers tas-sigurtà jipproteġu minn PHP2Shell?
Le. PHP2Shell huwa vulnerabbiltà f'PHP fuq is-server, headers jaħdmu fil-browser tal-viżitatur. Kontra PHP2Shell jgħin l-aġġornament għal verżjoni rranġata ta' PHP u r-restart tal-workers kollha. Headers huma tisħiħ addizzjonali kontra tipi oħra ta' attakk.
Content-Security-Policy tista' tkisser il-websajt tiegħi?
Iva, politika stretta żżejjed timblokka skripts, tipi ta' ittri jew kontenut inkorporat meħtieġ. Għalhekk tiddaħħal l-ewwel fil-modalità Report-Only, jiġu evalwati r-rapporti u biss imbagħad tinqaleb għal infurzar.
X-XSS-Protection għadu sensat?
Le. Il-browsers attwali ma jevalwawx aktar dan l-header, u r-rakkomandazzjoni hija li jitħalla barra jew jiġi ffissat fuq 0. Protezzjoni minn Cross-Site Scripting joffru escaping nadif fil-kodiċi u Content-Security-Policy.