A CSRF, vagy más néven “Cross-Site Request Forgery” egy webes támadási módszer, ahol egy rosszindulatú weboldal kényszeríti a felhasználót arra, hogy nemkívánatos kérést hajtson végre egy másik, általa már korábban autentikált oldalon.
Az Angular alapértelmezetten támogatja a CSRF (vagy XSRF) védelmet az HttpClient modulon keresztül. Angular az XSRF védelméhez az alábbi módszert használja:
- Egy
XSRF-TOKENnevű cookie-ban tárol egy token-t a szerverről. - Az
HttpClientminden kéréskor automatikusan hozzáad egyX-XSRF-TOKENnevű header-t, amely aXSRF-TOKENcookie értékét tartalmazza. - A szerver ellenőrzi a header-t és a cookie-ban lévő tokent minden oldalon történő kérés esetén, hogy meggyőződjön arról, hogy a kérés érvényes-e.
Példa a CSRF token beállítására Angular alkalmazásban:
- Szerver oldal: Először győződjön meg arról, hogy a szerver beállítva van arra, hogy küldjön egy
XSRF-TOKENcookie-t az első kérésre válaszolva, és ellenőrizze ezt a tokent minden további kérésben. - Angular oldal: Ha az Angular alkalmazást az
@angular/clisegítségével hozta létre és használja azHttpClientmodult, akkor az XSRF támogatás már alapértelmezetten engedélyezve van. Ha mégsem lenne, akkor az alábbi módon teheti meg:
import { HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';
@NgModule({
imports: [
HttpClientModule,
HttpClientXsrfModule.withOptions({
cookieName: 'XSRF-TOKEN', // a cookie neve, amely a tokent tartalmazza
headerName: 'X-XSRF-TOKEN' // a header neve, amelybe a token kerül
})
]
})
export class AppModule { }
- Kérések elküldése: Amikor az
HttpClientmodult használja kérések elküldésére, az Angular automatikusan hozzáadja aX-XSRF-TOKENheadert a kérésekhez.
this.http.post('/api/some-endpoint', data).subscribe(response => {
// handle response
});
- Szerver oldal ellenőrzés: A szervernek minden bejövő kérésnél ellenőriznie kell a
X-XSRF-TOKENheadert, és össze kell hasonlítania a cookie-ban tárolt tokennel. Ha a két token nem egyezik, a kérést el kell utasítani.
Ezen lépések betartásával megóvhatja Angular alkalmazását a CSRF támadásoktól.