Latest web development tutorials
×

PHP หลักสูตร

PHP หลักสูตร PHP แนะนำโดยย่อ PHP ติดตั้ง PHP ไวยากรณ์ PHP ตัวแปร PHP echo/print PHP ชนิดข้อมูล PHP คงที่ PHP เชือก PHP ผู้ประกอบการ PHP If...Else PHP Switch PHP แถว PHP เรียงลำดับอาร์เรย์ PHP Superglobals PHP While การไหลเวียน PHP For การไหลเวียน PHP ฟังก์ชัน PHP ตัวแปรเมจิก PHP namespaces PHP เชิงวัตถุ

PHP ฟอร์ม

PHP ฟอร์ม PHP รูปแบบการตรวจสอบสิทธิ์ PHP ฟอร์ม - ฟิลด์ที่จำเป็น PHP ฟอร์ม - อีเมลยืนยันและ URL PHP ตัวอย่างสมบูรณ์แบบ PHP $_GET ตัวแปร PHP $_POST ตัวแปร

PHP การสอนที่ทันสมัย

PHP อาร์เรย์หลายมิติ PHP วันที่ PHP บรรจุ PHP ไฟล์ PHP อัปโหลดไฟล์ PHP Cookie PHP Session PHP E-mail PHP ความปลอดภัย E-mail PHP Error PHP Exception PHP กรอง PHP กรองขั้นสูง PHP JSON

PHP 7 คุณสมบัติใหม่

PHP 7 คุณสมบัติใหม่

PHP ฐานข้อมูล

PHP MySQL แนะนำโดยย่อ PHP MySQL สัมพันธ์ PHP MySQL การสร้างฐานข้อมูล PHP MySQL สร้างตารางข้อมูล PHP MySQL แทรกข้อมูล PHP MySQL ใส่ข้อมูลหลาย PHP MySQL งบเตรียม PHP MySQL อ่านข้อมูล 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 แนะนำโดยย่อ AJAX PHP AJAX ฐานข้อมูล AJAX XML AJAX ค้นหาแบบ Real-time AJAX RSS Reader AJAX โหวต

PHP คู่มืออ้างอิง

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 การประมวลผลภาพ PHP RESTful

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.w3big.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.w3big.com')</script>

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

&lt;script&gt;location.href('http://www.w3big.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 โพสต์รูปแบบจะถูกส่ง - ข้อมูลจะถูกตรวจสอบ หากรูปแบบที่ไม่ได้ส่งมาจะข้ามการตรวจสอบและแสดงว่างเปล่า

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

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