Segurtasun goiburukoak HTTP protokoloan (I)

Web orriak dira gaur egunean internet erabiltzean baliabiderik kontsultatuena. Web orriak ikusteko gainera HTTP protokoloa erabiltzen da. HTTP protokoloaren (Hypertext Transfer Protocol) garapena 1987an hasi zen eta 1997an HTTP/1.1 bertsioa estandarra bihurtu zenetik orain dela gutxi (2015ean) irten den HTTP/2 bertsioa besterik ez dugu ezagutu. Nahiz eta bere bizitzan aldaketa askorik ez duen jasan, protokoloak dituen segurtasun akatsak ekiditeko teknika asko azaldu dira.

Artikulu honetan arriskurik garrantzitsuenak zein diren eta zure web zerbitzaria nola babestu daitekeen azalduko dugu. Horretarako Nginx eta ExpressJs erabiliko ditugu adibide gisa.

Zure web orria edo zerbitzaria arrisku horietatik salbu dagoen jakiteko, hurrengo tresna erabili dezakezu.

https://observatory.mozilla.org

X-XSS-Protection

Cross-site scripting (XSS) web aplikazioetan gertatu ohi den segurtasun akats bat da. Akats hontaz baliatuz, erasotzaile batek bermatua ez den kode zatiak sartu ahal ditu erabiltzailearen nabigatzailean exekutatzeko. Horrela, erabiltzailearen datuak edo saioak lapurtu ditzake sistemaren integritatea kolokan jarriz.

X-XSS-Protection HTTP goiburukoa Chrome eta IE nabigatzaileetan funtzionatzen duen ezaugarri bat da. Honek XSS bat detektatzen badu web dokumentuaren exekuzioa blokeatu dezake.

X-XSS-Protection: 0 Ezgaituta. Defektuzko balioa
X-XSS-Protection: 1 Scripta blokeatzen du baina ez dokumentuaren gainontzeko exekuzioa
X-XSS-Protection: 1; mode=block Web dokumentu guztiaren exekuzioa gelditzen du. Modurik egokiena.

Nginx:

add_header X-XSS-Protection “1; mode=block”;

Expressjs:

Helmet erabiliaz. https://helmetjs.github.io/docs/xss-filter/

// Modulua gehitu

var helmet = require(‘helmet’)

// Honek “X-XSS-Protection: 1; mode=block” goiburukoa gehitzen die
// HTTP erantzun guztiei
app.use(helmet.xssFilter())

Informazio gehiago: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection

CSP

Content Security Policy (CSP) XSS, clickjacking eta urruneko kode injekzioak ekiditeko beste segurtasun politika bat da. W3C partzuergoaren gomendioa da eraso hauei aurre egiteko.

Web garatzaileei eduki iturburu onartuak ezartzeko metodo estandar bat da. Honekin web orriak izango dituen eduki (html zati, irudi, javascript, css estilo…) ezberdinak zein zerbitzari edo domeinutatik kargatzea onartzen den zehazten lagunduko die.

Kargatuko diren eduki moten iturburuak banan banan defini daitezke edo “default-src” defektuzko konfigurazioan.

Nginx:

add_header Content-Security-Policy “default-src ‘self’; script-src ‘self’ ‘beste-irurtubu-bat.eus’…….”;

Expressjs:

Helmet erabiliz. https://github.com/helmetjs/csp

var csp = require(‘helmet-csp’)

app.use(csp({

directives: {
defaultSrc: [“‘self'”, ‘default.com’],
scriptSrc: [“‘self'”, “‘unsafe-inline'”],
styleSrc: [‘style.com’],
fontSrc: [“‘self'”, ‘fonts.com’],
imgSrc: [‘img.com’, ‘data:’],
sandbox: [‘allow-forms’, ‘allow-scripts’],
reportUri: ‘/report-violation’,
objectSrc: [“‘none'”],
upgradeInsecureRequests: true
}

}));

Informazio gehiago: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy

HSTS

HTTP Strict Transport Security (HSTS) komunikazioak edo cookieak ezin atzemateko web segurtasun politika bat da. Politika honek, bezero eta zerbitzari baten artean beti komunikazio guztia HTTPS (HTTP TLS/SSL erabiliz) bidez bermatuko dela adierazten du.

Politika hau zerbitzariaren erantzunean zehazten da goiburuko baten bidez eta modu seguruan atzitu beharreko denbora ere gehitzen zaio.

Nginx:

add_header Strict-Transport-Security “max-age=31536000; includeSubdomains; “;

Expressjs:

Helmet erabiliz. https://helmetjs.github.io/docs/hsts/

var helmet = require(‘helmet’)

app.use(helmet.hsts({
maxAge: 5184000
})

Informazio gehiago: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security

Eta honaino segurtasunari begira HTTP protokoloan erabili daitezkeen goiburukoei buruzko lehen artikulua. Hurrengoan beste goiburukoei buruz hitz egingo dugu, tartean inplementatzeko zail xamarra den HPKP, X-Frame-Options eta beste hainbat. TLS/SSL ziurtagiriak HTTP protokoloan (HTTPS) erabiltzeaz eta bere garrantziaz ere beste artikulu batean azalduko dugu.

Hurrengo artikulurarte.

Ondo izan.

Web orri honek cookiek erabiltzen ditu erabiltzailearen nabigazioa errazteko