Latest web development tutorials
×

PHP kuliah

PHP kuliah PHP pengantar singkat PHP memasang PHP tatabahasa PHP variabel PHP echo/print PHP Jenis Data PHP konstan PHP tali PHP operator PHP If...Else PHP Switch PHP susunan PHP Sorting array PHP superglobals PHP While sirkulasi PHP For sirkulasi PHP fungsi PHP Variabel sihir PHP Ruang nama PHP Berorientasi Objek

PHP bentuk

PHP bentuk PHP bentuk Authentication PHP bentuk - bidang yang harus diisi PHP bentuk - email verifikasi dan URL PHP contoh bentuk lengkap PHP $_GET variabel PHP $_POST variabel

PHP canggih Tutorial

PHP Array multidimensi PHP tanggal PHP berisi PHP berkas PHP Upload File PHP Cookie PHP Session PHP E-mail PHP keamanan E-mail PHP Error PHP Exception PHP filter PHP filter lanjutan PHP JSON

PHP 7 Fitur baru

PHP 7 Fitur baru

PHP database

PHP MySQL pengantar singkat PHP MySQL koneksi PHP MySQL Membuat database PHP MySQL Buat tabel data PHP MySQL memasukkan data PHP MySQL Menyisipkan beberapa data yang PHP MySQL Laporan disiapkan PHP MySQL membaca data PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX pengantar singkat AJAX PHP AJAX database AJAX XML AJAX pencarian real-time AJAX RSS Reader AJAX suara

PHP Reference manual

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP image Processing PHP RESTful

PHP Form Validasi

Bab ini menjelaskan cara menggunakan data formulir PHP kita diajukan oleh klien validasi.


PHP Form Validasi

catatan Dalam berurusan dengan bentuk PHP kita perlu mempertimbangkan keamanan.

bab ini kita akan menampilkan PHP Form Pengolahan keamanan data, untuk mencegah hacker dan spam kita perlu mengamankan validasi data formulir.

bentuk HTML dijelaskan dalam bagian ini berisi field input berikut: harus digunakan dengan bidang teks opsional, tombol radio, dan tombol submit:

Lihat Kode >>

Di atas bentuk aturan validasi adalah sebagai berikut:

bidang aturan validasi
nama Harus. + Hanya berisi huruf dan spasi
E-mail Harus. + Harus alamat email yang valid (termasuk '@' dan '.')
situs Harus. Jika ada, itu harus berisi URL yang valid
ucapan Harus. bidang input multi-line (text field)
jenis kelamin Harus. Anda harus memilih

Pertama, mari kita lihat kode bentuk HTML biasa:


bidang teks

"Nama", "E-mail", dan field "URL" adalah elemen input teks, yang "catatan" lapangan textarea. Kode HTML sebagai berikut:

“名字”: <input type="text" name="name">
E-mail: <input type="text" name="email">
网址: <input type="text" name="website">
备注: <textarea name="comment" rows="5" cols="40"></textarea>

tombol radio

"Gender" lapangan adalah tombol radio, kode HTML terlihat seperti ini:

性别:
<input type="radio" name="gender" value="female">女
<input type="radio" name="gender" value="male">男

elemen form

Kode bentuk HTML sebagai berikut:

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

Gunakan formulirmetode = metode ini "post"untuk mengirimkan data.

catatan Apa $ _SERVER [ "PHP_SELF"] variabel?

$ _SERVER [ "PHP_SELF"] adalah variabel yang super global, mengembalikan saat mengeksekusi nama file script yang terkait dengan akar dokumen.

Jadi, $ _SERVER [ "PHP_SELF"] akan mengirimkan data formulir ke halaman ini, bukannya melompat ke halaman yang berbeda.

catatan Apa htmlspecialchars () metode?

htmlspecialchars () fungsi untuk beberapa karakter yang tersedia ke dalam entitas HTML.

Karakter yang telah ditetapkan adalah:

  • & (Ampersand) menjadi & amp;
  • "(Double quote) menjadi & quot;
  • '(Single quote) menjadi & # 039;
  • <(Kurang dari) menjadi & lt;
  • > (Lebih besar dari) menjadi & gt;


bentuk PHP yang diperlukan untuk menyebabkan memperhatikan mana?

$ _SERVER [ "PHP_SELF"] variabel dapat digunakan oleh hacker!

Ketika hacker menggunakan cross-site scripting Link HTTP untuk menyerang, $ _ SERVER [ "PHP_SELF"] variabel akan ditanamkan di server script. Alasannya adalah bahwa cross-site scripting berkas executable melekat jalan belakang, sehingga $ _SERVER [ "PHP_SELF"] String akan berisi link HTTP belakang kode JavaScript.

catatan XSS juga dikenal sebagai CSS (Script Cross-Site), cross-site scripting serangan. Seorang penyerang berbahaya untuk memasukkan halaman Web berbahaya dalam kode html, ketika pengguna sedang berada di halaman, Web tertanam dalam kode html akan dijalankan untuk mencapai tujuan tertentu pengguna jahat ini.

Menentukan bentuk berkas berikut bernama "test_form.php":

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

Sekarang, kita menggunakan URL untuk mengirimkan ditentukan alamat "test_form.php", seperti yang ditunjukkan dalam kode di atas dimodifikasi sebagai berikut:

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

Melakukan hal yang baik.

Namun, dengan mempertimbangkan pengguna akan masukkan alamat berikut di address bar browser Anda:

http://www.w3big.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

URL di atas, akan ditafsirkan sebagai kode berikut dan jalankan:

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

Menambahkan script kode tag dan menambahkan perintah peringatan. Saat halaman sudah terbuka akan mengeksekusi kode Javascript (pengguna akan melihat pop-up). Ini hanyalah sebuah contoh sederhana untuk menggambarkan variabel PHP_SELF akan digunakan oleh hacker.

Harap dicatat bahwa kode JavaScript dapat ditambahkan ke tag <script>! Hacker dapat menggunakan halaman ini untuk mengarahkan ke server pada halaman lain, kode file halaman untuk melindungi kode berbahaya, kode dapat dimodifikasi untuk mendapatkan pengguna variabel global atau data formulir.


Bagaimana menghindari $ _SERVER [ "PHP_SELF"] dieksploitasi?

$ _SERVER [ "PHP_SELF"] oleh htmlspecialchars () fungsi untuk menghindari dieksploitasi.

membentuk kode sebagai berikut:

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

htmlspecialchars () untuk beberapa karakter yang tersedia ke dalam entitas HTML. Sekarang jika pengguna ingin menggunakan variabel PHP_SELF, hasilnya output sebagai berikut:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

Upaya kerentanan gagal!


Gunakan PHP validasi form data

Pertama-tama kita telah mengajukan data ke fungsi user () diproses melalui htmlspecialchars PHP.

Ketika kita menggunakan htmlspecialchars () fungsi, pengguna mencoba untuk menyerahkan bidang teks berikut:

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

kode tidak akan dieksekusi, karena akan disimpan sebagai kode escape HTML sebagai berikut:

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

Kode di atas adalah aman dan dapat ditampilkan atau menyisipkan pesan di halaman.

Ketika pengguna menyerahkan formulir, kami akan melakukan dua hal berikut:

  1. Gunakan PHP trim () berfungsi untuk menghapus data user input karakter yang tidak perlu (seperti: ruang, tab, baris baru).
  2. Gunakan PHP stripslashes () fungsi untuk menghapus garis miring terbalik masukan pengguna data (\)

Mari fungsi filtering ini ditulis dalam fungsi dari definisi kita sendiri, ini dapat sangat meningkatkan usabilitas kode.

Fungsi bernama test_input ().

Sekarang, kita dapat test_input () berfungsi untuk mendeteksi semua variabel di $ _POST, kode script adalah sebagai berikut:

contoh

<?php
// 定义变量并默认设置为空值
$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;
}
?>

Menjalankan contoh »

Perhatikan bahwa ketika kita menjalankan script di atas, dengan $ _SERVER [ "REQUEST_METHOD"] untuk mendeteksi apakah formulir dikirimkan. Jika REQUEST_METHOD adalah POST, form akan diserahkan - data akan diverifikasi. Jika formulir tidak disampaikan akan melewatkan verifikasi dan menampilkan kosong.

Gunakan item masukan pada contoh di atas adalah opsional, bahkan jika pengguna tidak memasukkan data apapun dapat ditampilkan dengan baik.

Pada bagian berikutnya kita akan menjelaskan bagaimana untuk memvalidasi data yang dimasukkan oleh pengguna.