Setelah selesai dalam membuat sebuah web aplikasi tindakan selanjutnya yang harus diperhatikan adalah dari aspek keamanan, hal ini sangat krusial untuk mencegah adanya “kerusakan” karena lupa atau bahkan disengaja (hacker dan spammer).
Ada berbagai alternatif dan kombinasi cara mengamankan agar sebuah website tidak dapat dirusak oleh pihak-pihak yang tidak bertanggung jawab, pembahasan serta ruang lingkup pada tulisan ini berfokus pada validasi form untuk meminimalisir kerusakan (cacat).
Form yang dibuat dengan menggunakan HTML yang nantinya digunakan untuk melakukan pemrosesan data dengan menggunakan PHP sebaiknya diberikan beberapa fitur tambahan. Harus diperhatikan faktor keamanan dalam membuat sebuah web aplikasi sifatnya sangat penting dan krusial, form harus difilter terlebih dahulu dengan menggunakan beberapa perintah, yang berguna untuk melakukan penyaringan inputan dari luar yang dilakukan oleh pengguna web aplikasi.
Adapun perintah atau kode didalam PHP sudah disediakan, seperti:
- Fungsi trim(), yang berfungsi untuk menghapus karakter contoh: spasi, baris baru dan tab
- Fungsi stripslahshes(), yang berfungsi untuk menghapus backslash(\)
- Fungsi htmlspecialchars(), yang berfungsi untuk merubah karakter spesial html untuk tidak dieksekusi
<script>location.href(‘http://www.hacked.com’)</script>
akan dirubah menjadi
<script>location.href(‘http://www.hacked.com’)</script>
kode diatas (alert javascript) tidak akan dieksekusi melainkan akan dirubah menjadi sebuah tulisan biasa.
berikut ini adalah potongan kode yang sudah dilakukan validasi dengan menggunakan beberapa fungsi diatas
<?php
// define variables and set to empty values
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = test_input($_POST["name"]);
$email = test_input($_POST["email"]);
$website = test_input($_POST["website"]);
$comment = test_input($_POST["comment"]);
$gender = test_input($_POST["gender"]);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
Beberapa cara untuk melakukan validasi tulisan/ teks, email dan URL
// Untuk validasi Teks atau Huruf
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
// Untuk validasi Email
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
// Untuk validasi URL
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
Dari contoh skrip diatas nanti bisa dipadukan serta dikombinasikan sehingga form yang dibuat akan benar-benar solid.
Jika berkaitan dengan database ada beberapa hal lagi yang harus dilakukan, agar kueri-kueri sql tetap terjaga, maka harus dilakukan filter, sebagai contoh lihat potongan kode berikut:
<?php
$con = mysqli_connect("localhost","my_user","my_password","my_db");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
// Escape special characters, if any
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$age = mysqli_real_escape_string($con, $_POST['age']);
$sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$firstname', '$lastname', '$age')";
if (!mysqli_query($con, $sql)) {
printf("%d Row inserted.\n", mysqli_affected_rows($con));
}
mysqli_close($con);
?>
Teknik diatas kurang lebih mirip dengan fungsi PHP yang sebelumnya dibuat yaitu trim(), stripslahshes().
mysqli_real_escape_string(), berguna menyaring inputan sebelum kueri dikirim ke MYSQL, tujuannya sama yaitu sebagai perlindungan agar tidak ada kueri yang salah dengan adanya karakter-karakter khusus yang bertujuan untuk membuat “kesalahan” dari kueri yang akan dieksekusi.
Beberapa teknik tersebut hanya meminimalisir kesalahan terjadinya error pada sebuah aplikasi, tidak ada yang benar-benar yang sempurna pada saat membuat sebuah aplikasi, namun tindakan pencegahan sangat diperlukan. Aplikasi akan sempurna dan padu ketika aplikasi sudah berjalan dari sana akan ditemukan sebuah error “bug”, baru kemudian akan dilakukan perbaikan-perbaikan kecil (minor).