السلام عليكم ورحمة الله وبركاته
هذه الدالة سهلة وبسيطة وتم اختبارها وهي فعالة جدا
تستخدم للحماية من أخطار XSS و SQL INJECTION
وهي مقسمة الى دالتين حيث يتم استدعاء الدالة الثانية من داخل الدالة الأولى
كل ما عليك هو استخدام الدالة الأولى فقط
اكواد الدوال كود PHP:
/*----------------------------------------------------------*/
/* 1 - function safe($str,$type='all') */
/*----------------------------------------------------------*/
/**
* XSS و SQL INJECTION تأمين النص من اخطار
* تأخذ هذه الدالة بارميترين
*
* 1 - $value : وهو النص المراد فحصه
* 2 - $type : وهو اختياري ويحدد نوع التأمين المطلوب على النص
*/
function safe($str,$type='all')
{
// اذا كان المطلوب تأمين شامل للنص
if ($type == 'all') {
// SQL INJECTION تأمين النص من اخطار
mysql_prep($str);
// XSS تأمين النص من اخطار
return htmlspecialchars($str);
// SQL INJECTION اذا كات المطلوب تأمين النص من اخطار
} elseif ($type == 'slash') {
mysql_prep($str);
return $str;
}
}
/*----------------------------------------------------------*/
/* 2 - function mysql_prep($value) */
/*----------------------------------------------------------*/
/**
* SQL INJECTION تأمين النص من اخطار
* تأخذ هذه الدالة بارميتر واحد
* $value وهو النص المراد فحصه
*/
function mysql_prep($value)
{
/**
* magic quotes التأكد من حالة
* هل هي مفعلة أو لا وتخزين الناتج في متغير
*/
$magic_quotes_active = get_magic_quotes_gpc();
/**
* php التأكد من اصدار
* في حالة كان الاصدار اعلى من 4.3
* اذن يمكن استخدام
* mysql_real_escape_string
*/
// i.e. PHP >= v4.3.0
$new_enough_php = function_exists( "mysql_real_escape_string" );
/**
* التأكد من ما اذا كان اصدار
* php = v4.3
* أو اعلى عن طريق استخدام النتغير
* $new_enough_php
*/
// PHP v4.3.0 or higher
if ($new_enough_php) {
/**
* التراجع عن تأثير
* magic quotes
* حتى تقوم الدالة
* mysql_real_escape_string
* بعملها
*/
// undo any magic quote effects so mysql_real_escape_string can do the work
if ($magic_quotes_active) {
$value = stripslashes($value);
}
$value = mysql_real_escape_string($value);
}
// v4.3.0 اذا كان اصدار بي اتش بي اقدم من
// before PHP v4.3.0
else {
// لاضافة علامات الاقتباس addslashes غير مفعلة يتم استخدام magic quotes اذا كانت
// if magic quotes aren't already on then add slashes manually
if (!$magic_quotes_active) {
$value = addslashes($value);
}
// مفعلة اذا سيتم اضافة علامات الاقتباس تلقائيا magic quotes اذا كانت
// if magic quotes are active, then the slashes already exist
}
return $value;
}
طريقة استخدام الدالة
كود PHP:
// مثال على استخدام الدالة
$str = '<p>Protect your site from nor15din</p>';
// قبل الحماية
echo $str;
// بعد الحماية
echo safe($str);
hgplhdi lk jyvhj sql , xss