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. شخصيات محددة مسبقا هي:
|
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/"><script>alert('hacked')</script>">
محاولة الضعف فشلت!
استخدام PHP التحقق من صحة بيانات النموذج
تتم معالجتها أولا وقبل كل شيء أنها قدمت بيانات وظيفة مستخدم () من خلال htmlspecialchars PHP ل.
عندما نستخدم htmlspecialchars () وظيفة، يحاول المستخدم لتقديم مجالات النص التالي:
<script>location.href('http://www.w3big.com')</script>
لن يتم تنفيذ التعليمات البرمجية، لأنه سيتم حفظ كما رمز الهروب HTML على النحو التالي:
<script>location.href('http://www.w3big.com')</script>
رمز أعلاه آمنة ويمكن عرض أو إدراج الرسالة في الصفحة.
عندما يقوم المستخدم بإرسال النموذج، فإننا سوف تفعل شيئين التالية:
- استخدام PHP تقليم وظيفة () لإزالة البيانات إدخال المستخدم الأحرف غير الضرورية (مثل: الفضاء، التبويب، سطر جديد).
- استخدام stripslashes PHP () وظيفة لإزالة مائل إدخال البيانات المستخدم (\)
فلتكن هذه الوظائف تصفية مكتوبة في وظيفة من تعريف الخاصة بنا، وهذا يمكن أن يعزز كثيرا من إعادة استخدام التعليمات البرمجية.
وظيفة اسمه test_input ().
الآن، يمكننا أن test_input وظيفة () للكشف عن المتغيرات في $ _POST، رمز السيناريو هو على النحو التالي:
أمثلة
// 定义变量并默认设置为空值
$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 هو وظيفة، وسيقدم على شكل - وسيتم التحقق من البيانات. إذا لم يتم إرسال النموذج سيتم تخطي التحقق ويعرض فارغة.
استخدام العناصر مساهمة في الأمثلة المذكورة أعلاه هي اختياري، حتى لو كان يمكن عرضها المستخدم لا يدخل أي البيانات بشكل صحيح.
في المقطع التالي سنقوم بشرح كيفية التحقق من صحة البيانات المدخلة من قبل المستخدم.