Mengamankan direktori upload

Kadang-kadang kita membuat sebuah direktori di bawah document root (artinya, dapat diakses langsung via web, misalnya http://www.tokoku.com/uploads) di mana pengunjung atau member website dapat menaruh file-file ke sana.

Atau bisa juga kita menaruh file-file contoh, seperti skrip PHP/CGI/Perl, yang dapat didownload langsung source code-nya via web.

Mengizinkan hal seperti ini cukup berbahaya dan harus berhati-hati, sebab jika tidak kita dapat mengeksekusi skrip yang tidak diinginkan. Pengunjung juga dapat mengupload virus, skrip, trojan, bahkan gambar JPEG/PNG pun dapat berbahaya jika memanfaatkan exploit librari JPEG/PNG (jika ada).

Beberapa tip:

Pertama, di skrip untuk mengupload sebaiknya kita hanya mengizinkan file-file tertentu saja dan membatasi ukuran, nama file, dsb agar meminimasi kemungkinan adanya file-file nakal. Lakukan pengecekan sebanyak mungkin sebagaimana diperlukan.

Kedua, direktori tempat menampung hasil upload perlu kita lindungi dengan .htaccess sbb:

<Files *>
  Sethandler default-handler
  ForceType application/octet-stream
</Files>

Perintah di atas untuk mencegah agar jika ada skrip PHP/CGI tidak tereksekusi melainkan hanya ditampilkan source code-nya begitu saja.

Catatan: jangan izinkan file yang diawali dengan karakter titik (.).

Ketiga, sebaiknya buat file index.html (yang kosong misalnya) untuk menutupi agar Apache tidak menampilkan directory listing dan memperlihatkan semua file dan subdirektori yang ada di direktori upload tersebut.

Resita has written 702 articles