السلام عليكم ورحمة الله وبركاته
اليوم جايب لكم درس في عمليات الأمان في الـ 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
وفي الختام أتمنى إني إستطعت شرح الدرس بكل سهولة.
والسلام عليكم ورحمة الله وبركاته
أخوكم : عامر الصيعري