国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Pengesahan borang PHP

Kita perlu mempertimbangkan keselamatan apabila berurusan dengan borang PHP.

Dalam bab ini kami akan menunjukkan pemprosesan keselamatan data borang PHP Untuk mengelakkan penggodam dan spam, kami perlu melakukan pengesahan keselamatan data pada borang.


Borang HTML yang diperkenalkan dalam bab ini mengandungi medan input berikut: Mesti dikaitkan dengan medan teks pilihan, butang radio , dan butang serah:

Instance

<!DOCTYPE HTML>
 <html>
 <head>
     <meta charset="utf-8">
     <title>PHP.cn</title>
 </head>
 <body>
 <h2>PHP 表單驗證實例</h2>
 <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
    名字: <input type="text" name="name" value="">
     <br>
     E-mail: <input type="text" name="email" value="">
     <br>
     網址: <input type="text" name="website" value="">
     <br>
     備注: <textarea name="comment" rows="5" cols="40"></textarea>
     <br>
     性別:
     <input type="radio" name="gender"  value="female">女
     <input type="radio" name="gender"  value="male">男
     <br>
     <input type="submit" name="submit" value="提交">
 </form>
 </body>
 </html>

Hasil berjalan program:

5.png

Peraturan pengesahan borang di atas adalah seperti berikut:

          字段        驗證規(guī)則
    名字必須。 +只能包含字母和空格
    E-mail必須。 + 必須是一個有效的電子郵件地址(包含'@'和'.')
    網址可選。如果存在,它必須包含一個有效的URL
    備注可選。 多行輸入字段(文本域)
Medan
    性別必須。 必須選擇一個
Peraturan pengesahan
NameDiperlukan. +Hanya boleh mengandungi huruf dan ruang
E-melDiperlukan; . + Mestilah alamat e-mel yang sah (mengandungi '@' dan '.')
Pilihan. Jika ada, ia mesti mengandungi URL yang sah
Catatan Pilihan; . Medan input berbilang baris (medan teks)

Mari kita pecahkan kod tersebut dan lihat:


Medan teks

Medan "Nama", "E-mel" dan "Laman Web" ialah elemen input teks dan medan "Catatan" ialah kawasan teks kawasan teks.

Kod HTML adalah seperti berikut:

Nama: <input type= " text" name="name" value="">
E-mel: <input type="text" name="email" value="">
Tapak web: <input type= " text" name="website" value="">
Nota: <textarea name="comment" rows="5" cols="40"></textarea>


Butang radio

Medan "Jantina" ialah butang radio

Kod HTML adalah seperti berikut:

Jantina:
<jenis input= " radio" name="gender" value="female">Perempuan
<input type="radio" name="gender" value="lelaki">Lelaki


Elemen borang

Kod borang HTML adalah seperti berikut:

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

Borang menggunakan kaedah method="post" untuk menyerahkan data.


Apakah pembolehubah $_SERVER["PHP_SELF"]?

$_SERVER["PHP_SELF"] ialah pembolehubah superglobal yang mengembalikan nama fail skrip yang sedang dilaksanakan.

Oleh itu, $_SERVER["PHP_SELF"] menghantar data borang ke halaman itu sendiri dan bukannya melompat ke halaman lain. Dengan cara ini, pengguna boleh mendapatkan maklumat mesej ralat pada halaman borang.


Apakah fungsi htmlspecialchars()?

fungsi htmlspecialchars() menukar aksara khas kepada entiti HTML. Ini bermakna aksara HTML seperti < Ini menghalang penyerang daripada mengeksploitasi kod dengan menyuntik kod HTML atau JavaScript ke dalam bentuk (serangan skrip merentas tapak).

Petua Penting Mengenai Keselamatan Borang PHP

Pembolehubah $_SERVER["PHP_SELF"] boleh dieksploitasi oleh penggodam!

Jika halaman anda menggunakan PHP_SELF, pengguna boleh memasukkan garis bawah dan melaksanakan skrip merentas tapak (XSS), juga dikenali sebagai css.?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? dengan XSS membolehkan penyerang memasukkan skrip sebelah klien ke dalam halaman web yang dilihat oleh pengguna lain.

Andaikan kita mempunyai halaman bernama "test_form.php" dengan borang berikut:

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

Sekarang, kami menggunakan URL untuk menentukan alamat penyerahan "test_form.php", kod di atas diubah suai seperti berikut:

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

Baiklah.

Walau bagaimanapun, pertimbangkan bahawa pengguna akan memasukkan alamat berikut dalam bar alamat penyemak imbas:

http://miracleart.cn/test_form.php/% 22 %3E%3Cscript%3Ealert('hacked')%3C/script%3E


URL di atas akan dihuraikan ke dalam kod berikut dan dilaksanakan:

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


Teg skrip telah ditambahkan pada kod dan arahan amaran telah ditambahkan. Kod Javascript ini akan dilaksanakan apabila halaman dimuatkan (pengguna akan melihat kotak pop timbul). Ini hanyalah contoh mudah bagaimana pembolehubah PHP_SELF boleh dieksploitasi oleh penggodam.

Sila ambil perhatian bahawa sebarang kod JavaScript boleh ditambah dalam teg <skrip> Penggodam boleh menggunakan ini untuk mengubah hala halaman ke halaman pelayan lain Fail kod halaman boleh melindungi kod hasad, dan kod itu boleh mengubah suai pembolehubah global atau mendapatkan data borang pengguna.


Bagaimana untuk mengelakkan $_SERVER["PHP_SELF"] dieksploitasi?

$ _SERVER ["PHP_SELF"] boleh dielakkan dengan menggunakan fungsi htmlspecialchars().

kod borang adalah seperti berikut:

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

htmlspecialchars() Tukar beberapa aksara yang dipratentukan kepada entiti HTML. Sekarang jika pengguna ingin menggunakan pembolehubah PHP_SELF, hasilnya akan dikeluarkan seperti berikut:

<form method="post" action="test_form.php/"> <skrip> makluman('digodam')</skrip>">

Gagal mencuba kerentanan ini!


Sahkan data borang melalui PHP

Perkara pertama yang perlu kita lakukan ialah lulus semua pembolehubah melalui fungsi htmlspecialchars() PHP.

Selepas kami menggunakan fungsi htmlspecialchars(), jika pengguna cuba menyerahkan perkara berikut dalam medan teks:

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

- Kod tidak akan dilaksanakan kerana ia akan disimpan sebagai kod yang dilepaskan, seperti ini:

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

Kini kod ini ialah dipaparkan pada halaman Ia selamat dalam talian atau melalui e-mel.

Apabila pengguna menyerahkan borang, kita perlu melakukan dua perkara lagi:

1 (Melalui fungsi trim() PHP) Alih keluar aksara yang tidak diperlukan (ruang tambahan) dalam data input pengguna. , tab, baris baharu)

2. (melalui fungsi PHP stripslashes()) Alih keluar garis miring ke belakang dalam data input pengguna ()

Seterusnya kami mencipta fungsi semak (berbanding dengan Menulis kod berulang kali menjadikannya lebih cekap).

Kami menamakan fungsi test_input().

Sekarang, kita boleh menyemak setiap pembolehubah $_POST melalui fungsi test_input(), skripnya seperti ini:

Contoh

<!DOCTYPE HTML>
 <html>
 <head>
     <meta charset="utf-8">
     <title>PHP中文網(php.cn)</title>
 </head>
 <body>
 
 <?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;
 }
 ?>
 
 <h2>PHP 表單驗證實例</h2>
 <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
     名字: <input type="text" name="name">
     <br><br>
     E-mail: <input type="text" name="email">
     <br><br>
     網址: <input type="text" name="website">
     <br><br>
     備注: <textarea name="comment" rows="5" cols="40"></textarea>
     <br><br>
     性別:
     <input type="radio" name="gender" value="female">女
     <input type="radio" name="gender" value="male">男
     <br><br>
     <input type="submit" name="submit" value="提交">
 </form>
 
 <?php
 echo "<h2>您輸入的內容是:</h2>";
 echo $name;
 echo "<br>";
 echo $email;
 echo "<br>";
 echo $website;
 echo "<br>";
 echo $comment;
 echo "<br>";
 echo $gender;
 ?>
 
 </body>

Jalankan program dan lihat


Nota: Apabila kami melaksanakan skrip di atas, kami akan menggunakan $_SERVER["REQUEST_METHOD"] untuk mengesan sama ada borang telah diserahkan. Jika REQUEST_METHOD ialah POST, borang akan diserahkan - dan data akan disahkan. Jika borang tidak dihantar pengesahan akan dilangkau dan dipaparkan kosong.

Penggunaan item input dalam contoh di atas adalah pilihan dan boleh dipaparkan seperti biasa walaupun pengguna tidak memasukkan sebarang data.


Dalam bab seterusnya kami akan memperkenalkan cara untuk mengesahkan data yang dimasukkan oleh pengguna.



Meneruskan pembelajaran
||
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>PHP.cn</title> </head> <body> <h2>PHP 表單驗證實例</h2> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字: <input type="text" name="name" value=""> <br> E-mail: <input type="text" name="email" value=""> <br> 網址: <input type="text" name="website" value=""> <br> 備注: <textarea name="comment" rows="5" cols="40"></textarea> <br> 性別: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男 <br> <input type="submit" name="submit" value="提交"> </form> </body> </html>