PHP Programming
Mengamankan Ajax Request pada PHP

Mengamankan Ajax Request pada PHP

Oleh | Selasa, 05 Desember 2017 10:52 WIB | 9.883 Views | Comments 2017-12-05 10:52:26

Ajax seringkali digunakan oleh banyak web programmer untuk mendapatkan data tertentu tanpa me-load keseluruhan halaman. Namun terkadang banyak celah yang dapat digunakan oleh para peretas dari pengunaan ajax ini. Oleh karenanya perlu adanya beberapa optimasi dari sisi keamanan. Beberapa hal yang dapat dilakukan adalah:

1. Membatasi Akses dari host yang tidak dikenal.
Cara ini untuk menghindari Cross Site Scripting yaitu dengan melakukan validasi pada bagian atas sebelum pengembalian data dilakukan berdasarkan parameter yang direquest.
 

header('Content-Type: application/json');

if (isset($_SERVER['HTTP_ORIGIN'])) {
    $address = 'http://' . $_SERVER['SERVER_NAME'];
    if (strpos($address, $_SERVER['HTTP_ORIGIN']) !== 0) {
        exit(json_encode([
            'error' => 'Invalid Origin header: ' . $_SERVER['HTTP_ORIGIN']
        ]));
    }
} else {
    exit(json_encode(['error' => 'No Origin header']));
}

2. Mengirimkan Token Keamanan
Metode kedua ini bisa juga dilakukan yaitu dengan cara menyamakan token yang dikirim dengan token yang ada di script ajax. Caranya adalah sebagai berikut:
 
  1. Generate token :

    session_start();
    if (empty($_SESSION['csrf_token'])) {
        $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
    }
  2. Tambahkan token yang telah di generate via meta :

    <meta name="csrf-token" content="<?= $_SESSION['csrf_token'] ?>">
  3. Lakukan Pemanggilan Ajax dengan mengirimkan Meta seperti dibawah ini :

    $.ajaxSetup({
        headers : {
            'CsrfToken': $('meta[name="csrf-token"]').attr('content')
        }
    });
  4. Lakukan pengecekan di Script Ajax anda :

    session_start();
    if (empty($_SESSION['csrf_token'])) {
        $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
    }
    
    header('Content-Type: application/json');
    
    $headers = apache_request_headers();
    if (isset($headers['CsrfToken'])) {
        if ($headers['CsrfToken'] !== $_SESSION['csrf_token']) {
            exit(json_encode(['error' => 'Wrong CSRF token.']));
        }
    } else {
        exit(json_encode(['error' => 'No CSRF token.']));
    }

3. Pengecekan User Login
Cara ketiga ini dikhususkan untuk ajax yang berjalan pada lingkungan yang telah login, jadi saat ajax script di panggil pastikan harus dicek terlebih dahulu sudah login atau belum.

Semoga bermanfaat.


Baca atau Download PDF Adi Sumaryadi - Bicara IT dan Internet



Mungkin anda tertarik menonton video tentang E-Voting Untuk Pemilu - Apakah Indonesia Bisa dan Siap?

Apa komentar anda tentang Tulisan Mengamankan Ajax Request pada PHP?


PHP Programming Lainnya
Mendapatkan Array Key dan Value Dari Form yang Di Post
Selasa, 28 November 2017 04:48 WIB
Mendapatkan Array Key dan Value Dari Form yang Di Post
Terkadang kita mempunyai data banyak yang harus diposting dalam sebuah form tetapi merupakan data yang sama. Untuk lebih memudahkannya data ID dari barisan data itu kita jadikan kunci array (key) sedangkan isinya adalah sebagai value. Lalu bagaimana saat diposting dan dibaca oleh PHP?
Alternatif Bila Modul Curl di Disable Untuk Memanggil External API
Senin, 23 Oktober 2017 17:48 WIB
Alternatif Bila Modul Curl di Disable Untuk Memanggil External API
Modul curl di PHP yang berjalan di web server memang dirasa yang paling baik untuk pemanggilan API atau meng-hit URL yang ada di server luar atau eksternal, bahkan beberapa librari umum seperti Facebook Connect juga menggunakan CURL.
Cara Mendapatkan Jumlah Fans Facebook Menggunakan PHP
Sabtu, 04 Maret 2017 06:56 WIB
Cara Mendapatkan Jumlah Fans Facebook Menggunakan PHP
Terkadang kita ingin menampilkan jumlah fans dari Fanspage Facebook yang kita miliki, tetapi design ingin dibuat sedemikian rupa, dengan begitu kita membutuhkan data fans dari fanspage di facebook dalam bentuk numeric. Berikut adalah caranya
Membuat Welcome Page atau Splash Page di Joomla
Selasa, 30 Desember 2008 06:56 WIB
Membuat Welcome Page atau Splash Page di Joomla
Splash screen biasanya dipakai oleh aplikas-aplikasi desktop atau aplikasi yang dipasang secara standalone dikomputer, sepertinya hal inipun terjadi disebuah website, terkadang butuh halaman pembuka atau welcome page yang isinya biasanya preview dari website yang didalamnya dan didominasi oleh animasi dalam bentuk flash animation. Bagi pengguna joomla atau wordpress atau website yang menggunakan index.php menjadi satu-satunya halaman yang diakses dan biasanya menggunakan clean url dan mod_rewrite tentu akan sedikit mengalami kesulitan, namun dimana ada kotoran disitu ada lalat eh salah..dimana ada kemauan disitu ada jalan.
Menampilkan Halaman Email dalam Format Image dengan GD2 Librari dan PHP
Rabu, 10 September 2008 10:00 WIB
Menampilkan Halaman Email dalam Format Image dengan GD2 Librari dan PHP
Banyaknya spam yang masuk ke email seorang pemilik website biasanya dikarenakan memasang email dengan plaintext langsung dihalaman website yang dimilikinya. Nah, untuk membantu mengurangi kekuatan mesin pencari email bekerja dengan baik maka kita akan bekerja dengan prinsip captca dimana mesin boot atau robot tidak bisa membaca tulisan yang ada dalam image. Sudah bisa ditebak, yang akan kita lakukan adalah dengan menampilkan email kita dalam bentuk gambar seperti yang dilakukan di website whois services dan juga flicker
Mengkompresi Website Kesayangan Kita dengan Modul di Apache2
Rabu, 20 Agustus 2008 09:35 WIB
Mengkompresi Website Kesayangan Kita dengan Modul di Apache2
Siapa yang tidak ingin website yang dimilikinya diakses lebih cepat? tentu semua orang ingin websitenya cepat begitu diakses oleh pengunjung, memang banyak faktor yang mempengaruhi kecepatan akses sebuah website mulai dari Desain yang disajikan, penyimpanan atau server dimana website itu disimpan (hosted) hingga model pemograman dan loading database server jenis server yang digunakan.Sekedar untuk lebih memaksimalkan kecepatan website kita, sebenarnya ada cara yang terlihat cukup efektif.