บทช่วยสอน PHP ตรวจสอบแบบฟอร์ม ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ PHP ตรวจสอบแบบฟอร์ม,ฟิลด์ข้อความ,ปุ่ม,องค์ประกอบของแบบฟอร์ม,แบบ PHP จำเป็นที่จะทำให้เกิดความสนใจไปที่ไหน?,วิธีการหลีกเลี่ยง $ _SERVER [ "PHP_SELF"] ถูกเอาเปรียบ?,ใช้ PHP แบบฟอร์มการตรวจสอบข้อมูล,ตัวอย่าง,

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

บทนี้จะอธิบายวิธีการใช้ข้อมูลแบบ PHP ของเราส่งมาโดยการตรวจสอบลูกค้า


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

หมายเหตุ ในการจัดการกับแบบ PHP เราจำเป็นต้องพิจารณาการรักษาความปลอดภัย

บทนี้เราจะแสดงให้คุณแบบ PHP การประมวลผลความปลอดภัยของข้อมูลเพื่อป้องกันไม่ให้แฮกเกอร์และสแปมเราจำเป็นต้องรักษาความปลอดภัยตรวจสอบข้อมูลแบบฟอร์ม

รูปแบบ HTML ที่อธิบายไว้ในส่วนนี้มีช่องใส่ต่อไปนี้: ต้องใช้กับช่องข้อความเลือกปุ่มและส่งปุ่ม:

ดูรหัส >>

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

สนาม กฎการตรวจสอบ
ชื่อ ต้อง + มีเพียงตัวอักษรและช่องว่าง
E-mail ต้อง + ต้องเป็นที่อยู่อีเมลที่ถูกต้อง (รวมถึง '@' และ '.')
สถาน ต้อง ถ้ามีก็ต้องมี URL ที่ถูกต้อง
คำพูด ต้อง ช่องใส่หลายสาย (เขตข้อความ)
เพศ ต้อง คุณต้องเลือก

อันดับแรกให้เราดูที่รหัสรูปแบบ HTML ธรรมดา:


ฟิลด์ข้อความ

"ชื่อ", "E-mail" และ "URL" ข้อมูลเป็นองค์ประกอบการป้อนข้อความฟิลด์ "หมายเหตุ" เป็น textarea โค้ด HTML ดังนี้

“名字”: <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>

ปุ่ม

"เพศ" ฟิลด์เป็นปุ่มโค้ด HTML ลักษณะเช่นนี้:

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

องค์ประกอบของแบบฟอร์ม

รหัสรูปแบบ HTML ดังนี้

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

ใช้วิธีการแบบฟอร์มนี้ = "โพสต์" วิธีการในการส่งข้อมูล

หมายเหตุ คือ $ _SERVER [ "PHP_SELF"] ตัวแปรอะไร?

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

ดังนั้น $ _SERVER [ "PHP_SELF"] จะส่งข้อมูลแบบฟอร์มหน้าปัจจุบันแทนการกระโดดไปยังหน้าเว็บที่แตกต่างกัน

หมายเหตุ htmlspecialchars () วิธีการคืออะไร?

htmlspecialchars () ฟังก์ชั่นกับตัวละครที่กำหนดไว้ล่วงหน้าในบางหน่วยงาน HTML

ตัวละครที่กำหนดไว้ล่วงหน้าคือ:

  • (สัญลักษณ์) กลายเป็น & amp;
  • "(Double อ้าง) กลายเป็น & quot;
  • '(Single อ้าง) กลายเป็น & # 039;
  • <(น้อยกว่า) จะกลายเป็น & lt;
  • > (มากกว่า) จะกลายเป็น & gt;


แบบ PHP จำเป็นที่จะทำให้เกิดความสนใจไปที่ไหน?

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

เมื่อแฮกเกอร์ใช้ข้ามไซต์เชื่อมโยงการเขียนสคริปต์ HTTP เพื่อโจมตี $ _ SERVER [ "PHP_SELF"] ตัวแปรจะถูกฝังอยู่ในสคริปต์เซิร์ฟเวอร์ เหตุผลก็คือว่าข้ามไซต์ไฟล์สคริปต์ที่ปฏิบัติการอยู่ติดกับเส้นทางที่อยู่เบื้องหลังดังนั้น $ _SERVER [ "PHP_SELF"] สตริงจะมีการเชื่อมโยงเบื้องหลัง HTTP รหัส JavaScript

หมายเหตุ XSS ยังเป็นที่รู้จัก CSS (Cross Site-Script) ข้ามไซต์โจมตีการเขียนสคริปต์ โจมตีที่เป็นอันตรายที่จะแทรกหน้าเว็บที่เป็นอันตรายในโค้ด HTML เมื่อผู้ใช้เรียกดูหน้าเว็บที่ฝังอยู่ภายในรหัส HTML จะถูกดำเนินการเพื่อให้บรรลุวัตถุประสงค์ที่เฉพาะเจาะจงของใช้ที่เป็นอันตราย

ระบุไฟล์รูปแบบดังต่อไปนี้ชื่อ "test_form.php":

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

ตอนนี้เราใช้ URL เพื่อส่งที่ระบุอยู่ "test_form.php" ดังแสดงในโค้ดข้างต้นมีการแก้ไขดังต่อไปนี้:

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

ทำดีเพื่อให้

แต่คำนึงถึงผู้ใช้จะป้อนที่อยู่ต่อไปนี้ในแถบที่อยู่ของเบราว์เซอร์ของคุณ:

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

URL ที่ดังกล่าวข้างต้นจะถูกตีความว่าเป็นรหัสต่อไปนี้และดำเนินการได้:

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

เพิ่มรหัสแท็กสคริปต์และเพิ่มคำสั่งแจ้งเตือน เมื่อโหลดหน้าเว็บจะรันโค้ดจาวาสคริ (ผู้ใช้จะเห็นป๊อปอัพ) นี่เป็นเพียงตัวอย่างง่ายๆเพื่อแสดงให้เห็นตัวแปร PHP_SELF จะถูกใช้โดยแฮกเกอร์

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


วิธีการหลีกเลี่ยง $ _SERVER [ "PHP_SELF"] ถูกเอาเปรียบ?

$ _SERVER [ "PHP_SELF"] โดย htmlspecialchars () ฟังก์ชันเพื่อหลีกเลี่ยงการถูกเอาเปรียบ

รูปของรหัสดังต่อไปนี้:

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

htmlspecialchars () เพื่อตัวอักษรที่กำหนดไว้ล่วงหน้าในบางหน่วยงาน HTML ตอนนี้ถ้าผู้ใช้ต้องการใช้ตัวแปร PHP_SELF ผลจะออกเป็นดังนี้

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

ความพยายามช่องโหว่ล้มเหลว!


ใช้ PHP แบบฟอร์มการตรวจสอบข้อมูล

ครั้งแรกของทั้งหมดที่เราได้ส่งข้อมูลให้กับผู้ใช้ () ฟังก์ชั่นการประมวลผลผ่าน htmlspecialchars ของ PHP

เมื่อเราใช้ htmlspecialchars () ฟังก์ชันที่ผู้ใช้พยายามที่จะส่งช่องข้อความต่อไปนี้:

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

รหัสจะไม่ต้องถูกประหารชีวิตเพราะมันจะถูกบันทึกเป็นรหัสหลบหนี HTML ดังนี้

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

รหัสข้างต้นมีความปลอดภัยและสามารถแสดงหรือใส่ข้อความในหน้า

เมื่อผู้ใช้ส่งแบบฟอร์มที่เราจะทำสองสิ่งต่อไปนี้:

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

ให้ฟังก์ชั่นการกรองเหล่านี้เขียนในฟังก์ชั่นของความหมายของเราเองนี้มากสามารถเพิ่มสามารถนำมาใช้รหัส

ฟังก์ชั่นชื่อ test_input ()

ตอนนี้เราสามารถ test_input () ฟังก์ชั่นในการตรวจสอบทั้งหมดของตัวแปรใน $ _POST รหัสสคริปต์จะเป็นดังนี้:

ตัวอย่าง

<?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;
}
?>

เล่นอินสแตนซ์»

ทราบว่าเมื่อเรารันสคริปต์ข้างต้นโดย $ _SERVER [ "REQUEST_METHOD"] การตรวจสอบว่าการส่งแบบฟอร์ม หาก REQUEST_METHOD โพสต์รูปแบบจะถูกส่ง - ข้อมูลจะถูกตรวจสอบ หากรูปแบบที่ไม่ได้ส่งมาจะข้ามการตรวจสอบและแสดงว่างเปล่า

ใช้รายการการป้อนข้อมูลในตัวอย่างข้างต้นเป็นตัวเลือกแม้ว่าผู้ใช้ไม่ได้ป้อนข้อมูลใด ๆ ที่สามารถแสดงผลได้อย่างถูกต้อง

ในส่วนถัดไปเราจะอธิบายถึงวิธีการตรวจสอบข้อมูลป้อนโดยผู้ใช้

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