أحدث البرامج التعليمية وتطوير الشبكة
×

PHP البرنامج التعليمي

PHP الصفحة الرئيسية PHP مقدمة PHP تثبيت PHP بناء الجملة PHP المتغيرات PHP صدى / طباعة 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 الحصول على معرف آخر MySQL إدراج متعددة MySQL Prepared MySQL Select Data MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP - XML

PHP XML موزعي PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX مقدمة AJAX PHP AJAX قاعدة البيانات AJAX XML AJAX بحث حي AJAX قارئ آر إس إس 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 التحقق من صحة النموذج

أعتقد SECURITY عند معالجة أشكال PHP!

وهذه الصفحات تظهر كيفية معالجة أشكال PHP مع الأمن في الاعتبار. التحقق من صحة السليم للبيانات النموذج مهم لحماية النموذج الخاص بك من المتسللين والمتطفلين!

شكل HTML سوف نعمل على في هذه الفصول، ويحتوي على حقول الإدخال المختلفة: مطلوب والحقول الاختيارية النص، أزرار الراديو، وزر الإرسال:

قواعد التحقق من صحة للنموذج أعلاه هي على النحو التالي:

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

أولا نحن سوف ننظر في رمز HTML عادي للنموذج:


الحقول النصية

الاسم، البريد الإلكتروني، وحقول الموقع هي العناصر إدخال النص، وحقل التعليق هو جزء النص. رمز 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"] يرسل بيانات النموذج المقدم إلى الصفحة نفسها، بدلا من القفز إلى صفحة مختلفة. بهذه الطريقة، سيكون المستخدم الحصول على رسائل خطأ على نفس الصفحة مثل النموذج.

ما هو htmlspecialchars() وظيفة؟

و htmlspecialchars() وظيفة تحويل أحرف خاصة إلى كيانات HTML. وهذا يعني أنه سيحل محل الأحرف HTML مثل <و> مع العلامة & lt؛ و & GT؛. وهذا ما يمنع المهاجمين من استغلال رمز HTML عن طريق حقن أو رمز جافا سكريبت (Cross-site Scripting attacks) في النماذج.


ملاحظة كبيرة على PHP الأمن نموذج

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

إذا تم استخدام PHP_SELF في صفحتك ثم يمكن للمستخدم إدخال خط مائل (/) وبعد ذلك بعض الكتابة عبر الموقع (XSS) أوامر لتنفيذه.

البرمجة عبر المواقع (XSS) هو نوع من ثغرة أمنية الكمبيوتر التي توجد عادة في تطبيقات الويب. 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>

هذا الرمز يضيف العلامة السيناريو وأمر في حالة تأهب. وعندما سيتم تنفيذ شفرة جافا سكريبت تحميل الصفحة (the user will see an alert box) . هذا مجرد مثال بسيط وغير ضارة كيف يمكن استغلالها المتغير 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

أول شيء سنقوم به هو لتمرير جميع المتغيرات من خلال PHP في htmlspecialchars() وظيفة.

عندما نستخدم htmlspecialchars() وظيفة. ثم إذا كان يحاول مستخدم تقديم ما يلي في حقل النص:

<script> الموقع. href('http://www.hacked.com') </ script>

- وهذا لن يتم تنفيذه، لأنه يتم حفظها كما هرب HTML التعليمات البرمجية، مثل هذا:

العلامة & lt؛ النصي وGT؛ موقع. href('http://www.hacked.com') العلامة & lt؛ / النصي وGT.

رمز الآن آمنة للظهور على الصفحة أو داخل البريد الإلكتروني.

ونحن أيضا اثنين من أكثر الأشياء عندما يقوم المستخدم بإرسال النموذج:

  1. الأحرف قطاع غير الضرورية (extra space, tab, newline) من البيانات إدخال المستخدم (with the PHP trim() وظيفة)
  2. إزالة الخطوط المائلة العكسية (\) من البيانات إدخال المستخدم (with the PHP stripslashes() وظيفة)

الخطوة التالية هي إنشاء وظيفة من شأنها أن تفعل كل فحص بالنسبة لنا (which is much more convenient than writing the same code over and over again) .

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

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

والخطوة التالية هي لجعل حقول الإدخال المطلوبة وإنشاء رسائل خطأ إذا لزم الأمر.