Sistem Absensi Dan Laporan Penggajian

Cara Membuat Form Validation Data Pada pemograman PHP

Halaman ini akan menunjukkan bagaimana proses bentuk PHP dengan keamanan Validasi yang tepat dari bentuk data penting untuk melindungi formulir Anda dari hacker dan spammer! Bentuk HTML kita akan bekerja di dalam pasal-pasal ini, mengandung berbagai bidang masukan: diperlukan dan bidang Text Fields , Radio Buttons, dan submit buttons:

Aturan validasi untuk formulir di atas adalah sebagai berikut:

Field
Validation Rules
Name
Required. + Must only contain letters and whitespace
E-mail
Required. + Must contain a valid email address (with @ and .)
Website
Optional. If present, it must contain a valid URL
Comment
Optional. Multi-line input field (textarea)
Gender
Required. Must select one

Pertama kita akan melihat kode HTML untuk form:
Text Fields
Nama, email, dan bidang situs adalah elemen input teks, dan kolom komentar adalah textarea. Kode HTML terlihat seperti ini:
Name: <input type="text" name="name">
E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40"></textarea>

Radio Button
Bidang gender radio buttuon dan kode HTML terlihat seperti ini:
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male

The Form Element
Kode HTML formulir terlihat seperti ini:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Ketika formulir dikirimkan, data formulir dikirim dengan metode = "post".

Apa $ _SERVER ["PHP_SELF"] variabel?
$ _SERVER ["PHP_SELF"] adalah variabel yang super global yang mengembalikan nama file dari script saat ini mengeksekusi. Jadi, $ _SERVER ["PHP_SELF"] mengirimkan data formulir diserahkan ke halaman itu sendiri, bukannya melompat ke halaman yang berbeda. Dengan cara ini, pengguna akan mendapatkan pesan error pada halaman yang sama.

Apa Fungsi htmlspecialchars () ?
Fungsi htmlspecialchars () mengkonversi karakter khusus untuk entitas HTML. Ini berarti bahwa itu akan menggantikan karakter HTML seperti <dan> dengan & lt; dan & gt;. Hal ini mencegah penyerang dari mengeksploitasi kode dengan menyuntikkan HTML atau kode Javascript (serangan Scripting Cross-site) dalam bentuk.

Catatan Penting untuk Keamanan Form PHP
Variabel $ _SERVER ["PHP_SELF"] dapat digunakan oleh hacker! Jika PHP_SELF digunakan dalam halaman Anda maka pengguna dapat memasukkan sebuah garis miring (/) dan kemudian beberapa Cross Site Scripting (XSS) perintah untuk mengeksekusi.
Cross-site scripting (XSS) adalah jenis kerentanan keamanan komputer biasanya ditemukan dalam aplikasi Web. XSS memungkinkan penyerang untuk menyuntikkan script sisi klien ke halaman Web dilihat oleh pengguna lain.

Asumsikan kita memiliki bentuk berikut di halaman bernama "test_form.php":

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

Sekarang, jika pengguna memasukkan URL yang normal di address bar seperti "http://www.example.com/test_form.php", kode di atas akan diterjemahkan ke:

<form method="post" action="test_form.php">

Namun, mempertimbangkan bahwa pengguna memasukkan URL berikut di address bar:


Dalam hal ini, kode di atas akan diterjemahkan ke:

<form method="post" action="test_form.php/"><script>alert('hacked')</script>

Kode ini menambahkan tag script dan perintah peringatan. Dan ketika halaman dijalankan, kode JavaScript akan dieksekusi (pengguna akan melihat kotak peringatan). Ini hanya contoh sederhana dan tidak berbahaya bagaimana variabel PHP_SELF dapat dimanfaatkan.

Menyadari bahwa kode JavaScript dapat ditambahkan dalam tag <script>! Seorang hacker dapat mengarahkan pengguna ke file di server lain, dan file yang dapat menyimpan kode berbahaya yang dapat mengubah variabel global atau menyerahkan formulir ke alamat lain untuk menyimpan data pengguna, misalnya.

Cara mencegah Eksploitasi $ _SERVER ["PHP_SELF?
Eksploitas $ _SERVER ["PHP_SELF"] dapat dihindari dengan menggunakan fungsi htmlspecialchars ().

Kode bentuk akan terlihat seperti ini:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Fungsi htmlspecialchars () fungsi mengkonversi karakter khusus untuk entitas HTML. Sekarang jika pengguna mencoba untuk mengeksploitasi variabel PHP_SELF, itu akan menghasilkan output sebagai berikut:
<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

Form Validasi Data pada PHP
Hal pertama yang akan kita lakukan adalah untuk lulus semua variabel melalui fungsi htmlspecialchars PHP (). Ketika kita menggunakan fungsi htmlspecialchars () ; maka jika pengguna mencoba untuk mengirimkan berikut dalam kolom teks:

<Script> location.href ('http://www.hacked.com') </ script>

Ini tidak akan dieksekusi, karena akan disimpan sebagai kode HTML , seperti ini:

& Lt; script yang & gt; location.href ('http://www.hacked.com') & lt; / script & gt;

Kode ini sekarang aman untuk ditampilkan pada halaman atau di dalam sebuah e-mail.
Jalur karakter yang tidak perlu (tambahan ruang, tab, baris baru) dari data input pengguna (dengan Fungsi PHP lis () ). Hapus backslashes (\) dari data input pengguna (dengan fungsi stripslashes PHP () ). Langkah berikutnya adalah untuk menciptakan sebuah fungsi yang akan melakukan semua pemeriksaan bagi kita (yang jauh lebih mudah daripada menulis kode yang sama berulang-ulang).
Kita beri nama fungsi test_input (). Sekarang, kita dapat memeriksa setiap variabel $ _POST dengan test_input () fungsi, dan script terlihat seperti ini:

<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?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;
}
?>
<h2>PHP Form Validation Example</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
   Name: <input type="text" name="name">
   <br><br>
   E-mail: <input type="text" name="email">
   <br><br>
   Website: <input type="text" name="website">
   <br><br>
   Comment: <textarea name="comment" rows="5" cols="40"></textarea>
   <br><br>
   Gender:
   <input type="radio" name="gender" value="female">Female
   <input type="radio" name="gender" value="male">Male
   <br><br>
   <input type="submit" name="submit" value="Submit">
</form>
<?php
echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
echo $comment;
echo "<br>";
echo $gender;
?>
</body>
</html>

Perhatikan bahwa pada awal script, kita memeriksa apakah formulir telah disampaikan menggunakan $ _SERVER ["REQUEST_METHOD"]. Jika REQUEST_METHOD adalah POST, maka formulir telah disampaikan - dan itu harus divalidasi. Jika belum diajukan, melewatkan validasi dan menampilkan formulir kosong.


Salam...,



No comments:

Post a Comment