PHP: keamanan. Apa itu XSS. Serangan XSS yang tersimpan dan perlindungan terhadapnya (hapus javascript dari html di browser) Perlindungan serangan Xss terhadapnya




Ketika menyangkut keamanan aplikasi, penting untuk menjaga tidak hanya perangkat keras dan sistem operasi, tetapi juga penulisan skrip yang aman. Dalam artikel ini, Anda akan mempelajari cara mengamankan aplikasi Anda dan mengurangi kerentanannya. Di bawah ini adalah daftar tindakan yang akan membantu Anda melindungi aplikasi Anda dari segala jenis serangan:

  • Validasi data yang masuk
  • Perlindungan terhadap serangan XSS
  • Perlindungan terhadap serangan CSRF
  • Pencegahan Injeksi SQL
  • Perlindungan sistem file
  • Perlindungan data sesi
  • Pemrosesan kesalahan
  • Perlindungan lampiran
  • Validasi data yang masuk

    Saat merancang aplikasi, Anda harus berusaha melindunginya dari masukan yang "buruk". Aturan yang harus diikuti adalah seperti ini: "Jangan pernah mempercayai apa yang dimasukkan pengguna." Meskipun sebagian besar pengguna tidak menimbulkan ancaman, selalu ada kemungkinan seseorang ingin meretas situs Anda menggunakan data “buruk” yang dimasukkan melalui formulir atau bilah alamat. Jika Anda selalu memvalidasi dan memfilter data yang masuk, maka Anda mempunyai peluang bagus untuk menulis aplikasi yang aman.

    Selalu periksa data Anda dalam skrip PHP. Jika Anda menggunakan JavaScript untuk memvalidasi data, penyerang dapat menonaktifkannya kapan saja di browsernya. Dalam hal ini, aplikasi Anda berisiko. Tidak ada yang menentang validasi JavaScript, tetapi untuk perlindungan yang baik, Anda perlu memeriksa ulang data dalam skrip PHP.

    Perlindungan terhadap serangan XSS

    Skrip lintas situs atau serangan XSS adalah serangan yang didasarkan pada penyuntikan kode pada halaman yang berpotensi rentan. Bahayanya adalah kode berbahaya bisa masuk melalui formulir dan kemudian ditampilkan di browser.

    Misalkan situs Anda memiliki formulir untuk memasukkan komentar, yang langsung ditampilkan setelah ditambahkan. Penyerang dapat memasukkan komentar yang berisi kode JavaScript. Setelah formulir dikirimkan, data dikirim ke server dan dimasukkan ke dalam database. Setelah itu, data diambil dari database dan komentar baru ditampilkan di halaman HTML, termasuk kode JavaScript yang disematkan. Ini mungkin mengarahkan pengguna ke halaman berbahaya atau situs phishing.

    Untuk melindungi aplikasi Anda, teruskan data masuk melalui fungsi strip_tags(), yang akan menghapus semua tag yang ada. Saat menampilkan data di browser, gunakan fungsi htmlentities().

    Perlindungan terhadap serangan CSRF

    Jenis serangan berikutnya yang akan kita lihat adalah serangan CSRF, atau pemalsuan permintaan lintas situs. Penyerang menggunakan berbagai trik untuk mendapatkan informasi rahasia atau menyelesaikan transaksi tanpa sepengetahuan korban. Hal ini terutama terjadi pada situs yang tidak terlindungi dengan baik, di mana logika bisnis didasarkan pada kerja permintaan GET.

    Secara umum, permintaan GET bersifat idempoten. Idempotensi dalam konteks ini berarti halaman yang sama dapat diakses sebanyak yang diinginkan tanpa campur tangan pihak ketiga. Oleh karena itu, permintaan GET sebaiknya hanya digunakan untuk mengakses informasi, tetapi tidak untuk melakukan berbagai macam transaksi.

    Contoh sederhana berikut menunjukkan bagaimana situs yang tidak aman dapat terkena serangan CSRF: