"Sanitasi yang cukup" sepenuhnya tergantung pada lingkungan yang Anda bicarakan. Sanitasi untuk MySQL harus dianggap sepenuhnya terpisah dari sanitasi untuk keluaran web, dan Anda harus menanganinya secara terpisah untuk menghindari banyak kerumitan.
Pembersihan untuk MySQL
mysql_real_escape_string()
akan membersihkan sepotong data dan membuatnya aman untuk dimasukkan ke dalam kueri SQL.- Tipe data berbahaya lainnya, seperti tag HTML di dalam string, harus benar-benar diabaikan. Mencoba memanipulasinya di sini akan membuat Anda sakit kepala saat Anda mencoba untuk "membatalkan manipulasi" nanti setelah mengeluarkannya dari database. "Data web" yang buruk tidak dapat membahayakan database Anda.
Sanitasi untuk keluaran
htmlspecialchars($val)
pada waktu keluaran akan mencegah tag berbahaya dirender, karena<
dan>
karakter diubah menjadi representasi entitasnya dan tidak dirender sebagai pembatas tag.- Gunakan
ENT_QUOTES
pengubah jika Anda mengeluarkan sesuatu yang ada di dalam atribut kutipan elemen HTML, seperti<input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" />
Itu semua yang Anda butuhkan, kecuali jika Anda memiliki persyaratan khusus. strip_tags()
seharusnya tidak benar-benar digunakan untuk sanitasi, karena dapat dibodohi dengan HTML yang terbentuk dengan buruk. Sanitasi adalah tujuan yang layak, dan jika Anda dapat memisahkan konteks Anda, Anda akan mengalami lebih sedikit masalah dengan manipulasi data di antara mereka.