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 مساحات 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 البحث في الوقت الحقيقي 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 الموضحة في هذا القسم يحتوي على حقول الإدخال التالية: يجب أن تستخدم مع الحقول نص اختياري، وأزرار الراديو، ويقدم أزرار:

عرض التعليمات البرمجية >>

فوق شكل قواعد التحقق من الصحة هي كما يلي:

حقل قواعد التحقق من الصحة
اسم يجب. + يحتوي فقط الحروف والمساحات
البريد الالكتروني يجب. + يجب أن يكون عنوان بريد إلكتروني صالح (بما في ذلك '@' و '.')
موقع يجب. إذا كان موجودا، فإنه يجب أن تحتوي على URL صالح
تعليق يجب. خط متعددة حقل إدخال (حقل النص)
جنس يجب. يجب تحديد

أولا، دعونا نلقي نظرة على عادي كود HTML شكل:


حقل النص

"الاسم"، "بريدك الإلكتروني"، وحقل "URL" هو عنصر إدخال النص، و "ملاحظات" هو جزء النص. كود 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.

شخصيات محددة مسبقا هي:

  • و(علامة العطف) لتصبح اند
  • "(الاقتباس مزدوج) يصبح ومثل.
  • "(الاقتباس واحد) يصبح & # 039؛
  • <(أقل من) لتصبح العلامة & lt؛
  • > (أكبر من) يصبح وGT.


PHP النموذج المطلوب ليسبب الانتباه إلى أين؟

$ _SERVER [ "PHP_SELF"] المتغيرات يمكن استخدامها من قبل المتسللين!

عندما المتسللين باستخدام المواقع المشتركة رابط HTTP البرمجة للهجوم، و$ _ سيتم زرعها الخادم [ "PHP_SELF"] متغير في البرنامج النصي الملقم. والسبب هو أن يرد عبر موقع ملف البرمجة النصية للتنفيذ إلى مسار وراء، لذلك سوف $ _SERVER [ "PHP_SELF"] سلسلة تحتوي على روابط HTTP وراء شفرة جافا سكريبت.

مذكرة XSS المعروف أيضا باسم CSS (سيناريو عبر الموقع)، عبر موقع هجمات البرمجة. مهاجم ضار لإدراج صفحة ويب الخبيثة في الكود، عندما يقوم المستخدم تصفح الصفحة، الويب جزءا لا يتجزأ من داخل الكود سيتم تنفيذها لتحقيق غرض محدد للمستخدم ضار.

تحديد ملف النموذج التالي اسمه "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

العنوان أعلاه سيتم تفسير، كما التعليمة البرمجية التالية وتنفيذ ما يلي:

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

إضافة علامة النصي رمز وإضافة القيادة في حالة تأهب. عند تحميل الصفحة سيتم تنفيذ شفرة جافا سكريبت (لن يرى المستخدم نافذة منبثقة). هذا مجرد مثال بسيط لتوضيح PHP_SELF متغير سيتم استخدامها من قبل المتسللين.

يرجى ملاحظة أن أي شفرة جافا سكريبت يمكن أن تضاف إلى العلامة <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. استخدام stripslashes PHP () وظيفة لإزالة مائل إدخال البيانات المستخدم (\)

فلتكن هذه الوظائف تصفية مكتوبة في وظيفة من تعريف الخاصة بنا، وهذا يمكن أن يعزز كثيرا من إعادة استخدام التعليمات البرمجية.

وظيفة اسمه 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 هو وظيفة، وسيقدم على شكل - وسيتم التحقق من البيانات. إذا لم يتم إرسال النموذج سيتم تخطي التحقق ويعرض فارغة.

استخدام العناصر مساهمة في الأمثلة المذكورة أعلاه هي اختياري، حتى لو كان يمكن عرضها المستخدم لا يدخل أي البيانات بشكل صحيح.

في المقطع التالي سنقوم بشرح كيفية التحقق من صحة البيانات المدخلة من قبل المستخدم.