# CSRF

**Cross-Site Request Forgery** salah satu jenis serangan yang masih sering ditemukan hingga saat ini.

## Apa itu CSRF?

**Cross-Site Request Forgery** dikenal juga dengan nama *one click attack* atau *session riding* dan biasa disingkat menjadi **CSRF** atau **XSRF**, merupakan jenis ekploitasi berbahaya dari sebuah website di mana perintah yang tidak sah ditransmisikan dari pengguna yang dipercaya oleh aplikasi web.

Mudahnya, serangan CSRF ini **menipu** situs web dengan cara **penyerang membuat&#x20;*****request*****&#x20;yang seolah-olah&#x20;*****request*****&#x20;tersebut berasal dari user yang dipercaya (korban)**.

Serangan bekerja melalui link atau *script* pada halaman web yang diakses oleh user. Link tersebut dapat berupa gambar yang terhubung ke website tertentu.&#x20;

Jika browser victim menyimpan informasi otentikasi dalam sebuah *cookie* yang belum *expire*, maka dengan mengklik ke link tersebut akan menyebabkan website diakses menggunakan *cookie* victim yang melakukan klik. Dengan kata lain, penyerang menipu browser user untuk mengirimkan *HTTP request* ke website target.

## Pengetahuan yang Harus Dimiliki

Ada 2 pengetahuan yang sangat penting menurut saya untuk melakukan CSRF ini, yaitu:

1. Pengetahuan tentang *HTTP request*,
2. Dan *client-side scripting* seperti JavaScript dan HTML.

## Bagaimana Cara Mengatasi CSRF?

Untuk meminimalisir dampak dari celah keamanan CSRF, developer bisa melakukan beberapa pencegahan dibawah ini:

* Website beralih dari metoda *persistent authentication* (menggunakan otentikasi dengan *cookie* atau HTTP) ke metoda *transient authentication* (menggunakan *hidden field* oleh setiap form).
* Menyertakan token *user-specific* rahasia yang ditambahkan ke *cookie*.
* Meskipun CSRF pada dasarnya adalah masalah dengan aplikasi web, user dapat membantu melindungi *account*-nya dengan logoff site sebelum mengunjungi yang lain atau membersihkan cookie browsernya pada akhir session browser.
* Menggunakan SSL (*Secure Socket Layer*) and TLS (*Transport Layer Security*) *encryption* ketika berurusan dengan data yang *sensitive*.
* Setting dan *restrict security* terkait *HTTP Header*, diantaranya Mengatur **Content-Security-Policy**, Menonaktifkan **X-Powered-By**, Mengatur **Strict-Transport-Security**, Mengatur **X-XSS-Protection**.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://notes.anggipradana.com/tutorial/dvwa/csrf.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
