Cara Mencegah XSS Attack di PHP | Mempelajari keamanan website menjadi suatu keharusan khususnya bagi Anda yang memiliki website serta mengurusnya sendiri atau Anda yang berprofesi sebagai programmer PHP. Serangan dari orang-orang jahil di dunia maya kerap kali terjadi dan tanpa diduga-duga. Salah satunya adalah serangan menggunakan teknik XSS (XSS Attack).

XSS merupakan kependekan dari Cross Side Scripting. XSS merupakan salah satu jenis serangan injeksi code (code injection attack). Biasanya penyerang melakukannya dengan cara memasukan tag atau script HTML ke dalam suatu website dengan tujuan tertentu misalnya untuk meredirect ke website tertentu, mencuri cookie pengguna dan lainnya.

Pada tutorial ini perlu digarisbawahi bahwa saya tidak berbagi teknik hacking, tetapi saya hanya berbagi cara pencegahannya saja. Hehee

Cara Mencegah XSS Attack di PHP

Bagaimana apakah sekarang Anda sudah siap praktek? Jika ya, silahkan ikuti langkah-langkah di bawah ini.

  1. Pertama-tama buatlah sebuah folder dengan nama ‘latihan’ didalam folder htdocs (C:\xampp\htdocs). Dimana folder ini nantinya kita gunakan untuk menyimpan file-file praktek ini.
  2. Ketikan script di bawah ini pada editor di PC Anda dan simpan dengan nama file ‘form_komentar.php’ didalam folder latihan.
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Form Komentar</title>
        <style>
          label { display: inline-block; width: 70px; margin-bottom: 10px; }
        </style>
      </head>
      <body>
      	<h1>Form Komentar</h1>
        <form method="post" action="tampilkan_komentar.php">
          <label for="nama">Nama</label> : <input type="text" name="nama" id="nama" size="50" maxlength="50" /> <br />
          <label for="email">Email</label> : <input type="email" name="email" id="email" size="50" maxlength="100" /> <br />
          <label for="website">Website</label> : <input type="url" name="website" id="website" size="50" maxlength="100" /> <br />
          <label for="komentar">Komentar</label> : <textarea name="komentar" id="komentar" rows="6" cols="50"></textarea> <br />
          <input type="submit" value="Kirim" />
        </form>
      </body>
    </html>

    Script di atas untuk membuat form komentar, yang mana nantinya digunakan untuk inputan setiap komentar.

  3. Selanjutnya ketikan script di bawah ini dan simpan dengan nama file ‘tampilkan_komentar.php’ didalam folder latihan.
    <?php
      $nama = isset($_POST['nama']) ? $_POST['nama'] : '';
      $email = isset($_POST['email']) ? $_POST['email'] : '';
      $website = isset($_POST['website']) ? $_POST['website'] : '';
      $komentar = isset($_POST['komentar']) ? $_POST['komentar'] : '';
    
      echo "Nama: " . $nama . "<br />";
      echo "Email: " . $email . "<br />";
      echo "Website: " . $website . "<br />";
      echo "Komentar: " . $komentar;
    ?>

    Script di atas berfungsi untuk menerima data seperti nama, email, website dan komentar yang dikirim dari form komentar yang telah kita buat sebelumnya.

  4. Kemudian buka browser di komputer atau PC Anda dan ketikan http://localhost/latihan/form_komentar.php. Pada kolom nama silahkan isikan dengan nama Anda. Begitu pula untuk email dan website. Sedangkan untuk kolom komentar silahkan isi dengan script di bawah ini.
    <script>window.location.href = "https://www.php.net";</script>

    Lihat apa yang terjadi setelah komentar dikirim. 😀 . Script diatas digunakan untuk meredirect ke website tertentu, dalam contoh ini saya meredirect ke website resmi PHP. Itulah salah satu contoh script XSS.

  5. Pada file tampilkan_komentar.php silahkan edit atau ganti dengan script PHP di bawah ini. Dimana script ini berfungsi untuk mencegah XSS Attack.
    <?php
      
      function antiInjection($str) {
        $r = stripslashes(strip_tags(htmlspecialchars($str, ENT_QUOTES)));
        return $r;
      }
      
      $nama = isset($_POST['nama']) ? antiInjection($_POST['nama']) : '';
      $email = isset($_POST['email']) ? antiInjection($_POST['email']) : '';
      $website = isset($_POST['website']) ? antiInjection($_POST['website']) : '';
      $komentar = isset($_POST['komentar']) ? antiInjection($_POST['komentar']) : '';
    
      echo "Nama: " . $nama . "<br />";
      echo "Email: " . $email . "<br />";
      echo "Website: " . $website . "<br />";
      echo "Komentar: " . $komentar;
    
    ?>
  6. Kemudian ulang kembali seperti langkah pada point no. 4. Yeayy.. Sekarang script XSS berhasil dicegah.

Saya rasa cukup tutorial PHP mengenai cara mencegah XSS Attack di PHP ini. Jangan lupa baca tutorial menarik lainnya mengenal method POST dan GET pada PHP.