ฟอรั่ม | ล่าสุดการพัฒนาเว็บบทเรียน
×

PHP เกี่ยวกับการสอน

PHP บ้าน PHP แนะนำ PHP ติดตั้ง PHP วากยสัมพันธ์ PHP ตัวแปร PHP Echo / พิมพ์ PHP ชนิดข้อมูล PHP เงื่อนไข PHP ค่าคงที่ PHP ผู้ประกอบการ PHP If...Else...Elseif PHP Switch PHP ในขณะที่ลูป PHP สำหรับลูป PHP ฟังก์ชั่น PHP แถว PHP เรียงลำดับอาร์เรย์ PHP Superglobals

PHP การจัดการ

PHP ฟอร์ม การจัดการ PHP ฟอร์ม การตรวจสอบ PHP ฟอร์ม จำเป็นต้องใช้ PHP ฟอร์ม URL/E-mail PHP ฟอร์ม สมบูรณ์

PHP สูง

PHP อาร์เรย์หลายมิติ PHP วันและเวลา PHP ประกอบด้วย PHP ไฟล์ การจัดการ PHP ไฟล์ เปิด / อ่าน PHP ไฟล์ สร้าง / เขียน PHP ไฟล์ อัปโหลด PHP Cookies PHP Sessions PHP ฟิลเตอร์ PHP Filters สูง PHP ผิดพลาด การจัดการ PHP ข้อยกเว้น

MySQL Database

MySQL ฐานข้อมูล MySQL สัมพันธ์ MySQL Create DB MySQL Create ตาราง MySQL Insert Data MySQL รับ ID เข้าครั้งสุดท้าย MySQL ใส่หลาย MySQL Prepared MySQL Select Data MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP - XML

PHP XML parsers PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX แนะนำ AJAX PHP AJAX ฐานข้อมูล AJAX XML AJAX ค้นหาสด AJAX RSS Reader AJAX โพลล์

PHP Examples

PHP ตัวอย่าง PHP ทดสอบ PHP ใบรับรอง

PHP การอ้างอิง

PHP แถว PHP ปฏิทิน PHP วันที่ PHP ไดเรกทอรี PHP ผิดพลาด PHP ระบบแฟ้ม PHP กรอง PHP FTP PHP HTTP PHP Libxml PHP จดหมาย PHP คณิตศาสตร์ PHP อื่น ๆ PHP MySQLi PHP SimpleXML PHP เชือก PHP XML PHP Zip PHP ช่วงเวลา

 

PHPการตรวจสอบ 5 แบบฟอร์ม


นี้และบทถัดไปแสดงวิธีการใช้ PHP ในการตรวจสอบข้อมูลในแบบฟอร์ม


PHP ตรวจสอบแบบฟอร์ม

บันทึกคิดว่าการรักษาความปลอดภัยเมื่อการประมวลผลรูปแบบ PHP!

หน้าเว็บเหล่านี้จะแสดงวิธีการที่จะดำเนินการในรูปแบบ PHP กับการรักษาความปลอดภัยในใจProper validation of form data is important to protect your form from hackers and spammers! ตรวจสอบความถูกต้องของข้อมูลรูปแบบเป็นสิ่งสำคัญในการปกป้องแบบฟอร์มของคุณจากแฮกเกอร์และสแปมเมอร์!

รูปแบบ HTML ที่เราจะทำงานที่ในบทเหล่านี้มีช่องใส่ต่างๆ: จำเป็นและเขตเลือกข้อความปุ่มและปุ่มส่ง:

กฎการตรวจสอบรูปแบบดังกล่าวข้างต้นมีดังนี้

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

ครั้งแรกที่เราจะดูที่โค้ด HTML ธรรมดาสำหรับรูปแบบ:


ช่องข้อความ

ชื่อ, อีเมล์และสาขาที่เว็บไซต์เป็นองค์ประกอบการป้อนข้อความและข้อมูลการแสดงความคิดเห็นเป็น textareaThe HTML code looks like this: รหัส HTML ลักษณะเช่นนี้:

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>

ปุ่ม

เขตเพศจะมีปุ่มวิทยุและรหัส HTML ลักษณะเช่นนี้:

Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male

แบบฟอร์มธาตุ

รหัส HTML ของรูปแบบที่มีลักษณะเช่นนี้

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

เมื่อส่งแบบฟอร์ม, แบบฟอร์มข้อมูลจะถูกส่งด้วยวิธี = "โพสต์"

บันทึกราคา $ _SERVER [ "PHP_SELF"] ตัวแปรคืออะไร?

ราคา $ _SERVER [ "PHP_SELF"] เป็นตัวแปรทั่วโลกสุดที่ส่งกลับชื่อไฟล์ของสคริปต์ในขณะนี้การดำเนินการ

ดังนั้น $ _SERVER [ "PHP_SELF"] ส่งข้อมูลแบบฟอร์มส่งไปยังหน้าของตัวเองแทนการกระโดดไปยังหน้าเว็บที่แตกต่างกันThis way, the user will get error messages on the same page as the form. วิธีนี้ผู้ใช้จะได้รับข้อความแสดงข้อผิดพลาดในหน้าเดียวกับรูปแบบ

บันทึกhtmlspecialchars () ฟังก์ชันคืออะไร?

htmlspecialchars () ฟังก์ชันแปลงอักขระพิเศษไปยังหน่วยงาน HTMLThis means that it will replace HTML characters like < and > with &lt; ซึ่งหมายความว่ามันจะเข้ามาแทนที่ตัวอักษรเช่น HTML <และ> กับ & lt;และ & gt ;.This prevents attackers from exploiting the code by injecting HTML or Javascript code (Cross-site Scripting attacks) in forms. นี้จะช่วยป้องกันการโจมตีจากการใช้ประโยชน์จากรหัสโดยการฉีด HTML หรือรหัส JavaScript (cross-site scripting โจมตี) ในรูปแบบ

หมายเหตุใหญ่ในการรักษาความปลอดภัยแบบ PHP

ราคา $ _SERVER [ "PHP_SELF"] ตัวแปรสามารถนำมาใช้โดยแฮกเกอร์!

หาก PHP_SELF ใช้ในหน้าของคุณแล้วผู้ใช้สามารถใส่ทับ (/) แล้วบาง Cross Site Scripting (XSS) คำสั่งที่จะดำเนินการ

บันทึกcross-site scripting (XSS) เป็นประเภทของช่องโหว่ความปลอดภัยคอมพิวเตอร์มักจะพบในการใช้งานเว็บXSS enables attackers to inject client-side script into Web pages viewed by other users. XSS ช่วยให้ผู้โจมตีสามารถฉีดสคริปต์ฝั่งไคลเอ็นต์ลงในหน้าเว็บดูได้โดยผู้ใช้อื่น ๆ

สมมติว่าเรามีรูปแบบต่อไปนี้ในหน้าชื่อ "test_form.php":

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

ตอนนี้ถ้าผู้ใช้ป้อน URL ที่ปกติในแถบที่อยู่เช่น "http://www.example.com/test_form.php" รหัสดังกล่าวจะได้รับการแปลเป็​​นภาษา:

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

เพื่อให้ห่างไกลดังนั้นดี

แต่พิจารณาว่าผู้ใช้ป้อน URL ต่อไปนี้ในแถบที่อยู่:

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

ในกรณีนี้โค้ดข้างต้นจะได้รับการแปลเป็​​นภาษา:

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

รหัสนี้จะเพิ่มแท็กสคริปต์และคำสั่งแจ้งเตือนAnd when the page loads, the JavaScript code will be executed (the user will see an alert box). และเมื่อโหลดหน้าเว็บรหัส JavaScript จะถูกดำเนินการ (ผู้ใช้จะเห็นช่องการแจ้งเตือน)นี่เป็นเพียงตัวอย่างง่ายๆและไม่เป็นอันตรายวิธีตัวแปร PHP_SELF สามารถใช้ประโยชน์

โปรดทราบว่าโค้ด JavaScript ใด ๆ ที่สามารถเพิ่มภายใน <script> แท็ก! แฮกเกอร์สามารถเปลี่ยนเส้นทางผู้ใช้ไปยังแฟ้มบนเซิร์ฟเวอร์อื่นและไฟล์ที่สามารถเก็บรหัสที่เป็นอันตรายที่สามารถปรับเปลี่ยนตัวแปรทั่วโลกหรือส่งแบบฟอร์มไปยังที่อยู่ที่อื่น ในการบันทึกข้อมูลผู้ใช้ตัวอย่างเช่น


วิธีการหลีกเลี่ยง $ _SERVER [ "PHP_SELF"] หาประโยชน์?

$ _SERVER [ "PHP_SELF"] หาประโยชน์สามารถหลีกเลี่ยงได้โดยการใช้ htmlspecialchars () ฟังก์ชัน

แบบฟอร์มรหัสควรมีลักษณะเช่นนี้

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

htmlspecialchars () ฟังก์ชันแปลงอักขระพิเศษไปยังหน่วยงาน HTMLNow if the user tries to exploit the PHP_SELF variable, it will result in the following output: ตอนนี้ถ้าผู้ใช้พยายามที่จะใช้ประโยชน์จากตัวแปร PHP_SELF ก็จะส่งผลในการส่งออกต่อไปนี้:

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

ใช้ประโยชน์ความพยายามที่ล้มเหลวและไม่มีอันตรายใด ๆ จะทำ!


ตรวจสอบข้อมูลในแบบฟอร์มด้วย PHP

สิ่งแรกที่เราจะทำคือการผ่านตัวแปรทั้งหมดผ่าน htmlspecialchars ของ PHP () ฟังก์ชัน

เมื่อเราใช้ htmlspecialchars () ฟังก์ชัน;then if a user tries to submit the following in a text field: แล้วถ้าผู้ใช้พยายามที่จะส่งต่อไปนี้ในช่องข้อความ:

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

- นี้จะไม่ได้รับการดำเนินการเพราะมันจะได้รับการบันทึกเป็น HTML หนีรหัสเช่นนี้

& lt; สคริปต์ & gt; location.href ( 'http://www.hacked.com') & lt; / script & gt;

รหัสคือตอนนี้ปลอดภัยที่จะปรากฏบนหน้าหรือภายใน E-mail

นอกจากนี้เรายังจะทำสองสิ่งที่มากขึ้นเมื่อผู้ใช้ส่งรูปแบบ:

  1. ตัวอักษรที่ไม่จำเป็น Strip (พื้นที่พิเศษ, แท็บขึ้นบรรทัดใหม่) จากข้อมูลที่ผู้ใช้ป้อน (กับ PHP ตัด () ฟังก์ชั่น)
  2. ลบทับขวา (\) จากข้อมูลที่ผู้ใช้ป้อน (กับ PHP stripslashes () ฟังก์ชัน)

ขั้นตอนต่อไปคือการสร้างฟังก์ชั่นที่จะทำการตรวจสอบทั้งหมดของเรา (ซึ่งเป็นมากสะดวกสบายกว่าการเขียนรหัสเดียวกันซ้ำแล้วซ้ำอีก)

เราจะตั้งชื่อ test_input ฟังก์ชัน ()

ตอนนี้เราสามารถตรวจสอบแต่ละ $ _POST ตัวแปรกับ test_input () ฟังก์ชั่นและสคริปต์ที่มีลักษณะเช่นนี้

ตัวอย่าง

<?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;
}
?>
ตัวอย่างเรียก»

ขอให้สังเกตว่าในช่วงเริ่มต้นของสคริปต์ที่เราตรวจสอบว่ารูปแบบที่ได้รับการส่งโดยใช้ $ _SERVER [ "REQUEST_METHOD"]If the REQUEST_METHOD is POST, then the form has been submitted - and it should be validated. หาก REQUEST_METHOD คือโพสต์แล้วรูปแบบที่ได้รับการส่ง - และมันควรจะถูกตรวจสอบถ้ามันยังไม่ได้ถูกส่งข้ามการตรวจสอบและแสดงฟอร์มที่ว่างเปล่า

อย่างไรก็ตามในตัวอย่างข้างต้นทุกช่องใส่เป็นตัวเลือกThe script works fine even if the user does not enter any data. สคริปต์ที่ทำงานได้ดีแม้ว่าผู้ใช้จะไม่ได้เข้าข้อมูลใด ๆ

ขั้นตอนต่อไปคือการทำให้ช่องใส่ต้องและสร้างข้อความผิดพลาดในกรณีที่จำเป็น