السلام عليكم ورحمة الله وبركاته
اليوم جايب لكم درس في عمليات الأمان في الـ php وأختها الـ mysql.
في هذا الدرس سوف نتطرق لطريقة سد ثغرات الـ mysql injection & Cross Site Scripting.
أهم شي في برمجة الـ php والذي الكثير من الأخوان يتجاهله هو ( مخرجات الحقول ) في النماذج وهذا بحد ذاته منبع الخطورة.
نبدأ بالدرس.....
Sql-Injection
ماذا لو كان نموذج يرسل متغير لصفحة معينة وهذه الصفحة تستعلم بهذا الشكل.
من خلال هذا الكود يستطيع أي شخص لديه فكره بسيطه عن الثغرات إختراق سكربتك بكل سهولة ( لن أشرح الطريقة وذلك حفاظاَ على الأخوان )كود PHP:
<?php
mysql_query("SELECT * FROM db WHERE username='$_POST[data]'");
?>
فيجب على أي شخص عن إرسال متغير من خلال نموذج أن يقوم بالتالي:
على سبيل المثال : المتغير الذي لدينا هو ( $_POST[data] ) كما في المثال السابق.
يجب أن نقوم بفلترة المتغير قبل إستخراج الناتج ويكون بهذا الشكل
كود PHP:
$data= addslashes(strip_tags($_POST[data]));
وبعد ذلك نقوم بالاستعلام بهذا الشكل
وبذلك لا يستطيع أحد إرسال مخرجات من النماذج لإخترق السكربت.كود PHP:
<?php
mysql_query("SELECT * FROM db WHERE username='$data'");
?>
Cross Site Scripting
هذه الثغره شرحها طويل جدا ولكن سأقوم بشرح شي بسيط على عجاله.
لا تقم بهذه الطريقة أبداً
أوكود PHP:
include($_GET['page']);
كود PHP:
header("Location: ".$_GET['page']);
لأنه بكل بساطه سيستطيع المخترق إرسال (كود جافا) لسحب الكوكيز على أقل تقدير. بهذا الشكل ( http://www.uu.com/script.php?page=ht...y.com/java.php
وفي الختام أتمنى إني إستطعت شرح الدرس بكل سهولة.
والسلام عليكم ورحمة الله وبركاته
أخوكم : عامر الصيعري