Mengenal Kesalahan Konfigurasi Cross Origin Resource Sharing

Cross Origin Resource Sharing (CORS)

Adalah mekanisme yang memungkinkan server untuk memberikan izin akses kepada website dari domain yang berbeda untuk mengakses sumber daya tertentu. Hal ini dilakukan dengan menambahkan header khusus dalam respons HTTP yang diterima oleh browser. Namun, jika terjadi kesalahan konfigurasi pada CORS, maka website dapat dieksploitasi oleh attacker dan dapat mencuri data dari website tersebut.

Salah satu jenis serangan yang dapat dilakukan pada website yang salah konfigurasi pada CORS adalah serangan Cross-Site Request Forgery (CSRF), yang mana attacker akan mengeksploitasi header CORS untuk merequest suatu sumber daya dari website dan mengirimkan data yang tidak sah sebagai bentuk autentikasi.

Contoh kode salah konfigurasi pada CORS adalah sebagai berikut:


Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, PUT"
Header set Access-Control-Allow-Headers "Content-Type, Authorization"


Kode di atas memberikan header CORS yang memperbolehkan akses dari domain mana pun (`Access-Control-Allow-Origin "*"`), dengan metode GET, POST, dan PUT (`Access-Control-Allow-Methods "GET, POST, PUT"`) serta memperbolehkan header konten-type dan autorisasi (`Access-Control-Allow-Headers "Content-Type, Authorization"`). Namun, kode tersebut tidak memberikan proteksi yang cukup terhadap potensi serangan CSRF.

Untuk memproteksi website dari serangan CSRF, sebaiknya konfigurasi CORS yang diberikan hanya memperbolehkan akses dari domain spesifik yang dipercaya. Contoh kode yang lebih baik untuk konfigurasi CORS adalah sebagai berikut:


Header set Access-Control-Allow-Origin "http://example.com"
Header set Access-Control-Allow-Credentials true
Header set Access-Control-Allow-Methods "GET, POST, PUT"
Header set Access-Control-Allow-Headers "Content-Type, Authorization"


Kode di atas hanya memperbolehkan akses dari domain `http://example.com` (`Access-Control-Allow-Origin "http://example.com"`) dengan memperbolehkan akses kredensial (`Access-Control-Allow-Credentials true`) dan hanya memperbolehkan metode GET, POST, dan PUT dengan header konten-type dan autentikasi yang diperbolehkan (`Access-Control-Allow-Methods "GET, POST, PUT"` dan `Access-Control-Allow-Headers "Content-Type, Authorization"`).

Dalam implementasi CORS, penting untuk menjaga konfigurasi yang benar untuk memastikan website aman dari serangan. Pada contoh kode di atas, konfigurasi yang lebih ketat dapat memproteksi website dari serangan CSRF.

Bottom Line:

CORS merupakan mekanisme yang penting dalam memperbolehkan akses website dari domain yang berbeda. Namun, jika terjadi kesalahan konfigurasi pada CORS, maka website dapat dieksploitasi oleh attacker dan dapat mencuri data dari website tersebut. Penting untuk memastikan konfigurasi CORS yang benar untuk memproteksi website dari serangan.

0 Komentar