عاشق الحب
08-11-2007, 08:43 AM
الدالة بسيطة جداً وتكفي بصراحة فيما يخص تأمين اي نص مدخل من قبل الزائر أو العضو ضد أخطار XSS و SQL INJECTION او باختصار (اختراق الموقع).. فأحببت عرضها لكم
رمز PHP:
function make_safe($str)
{
return htmlspecialchars(addslashes(trim($str)));
}
طريقة الاستخدام:
رمز PHP:
$safe_string = make_safe($_GET['user_input']);
بعد ذلك يمكنك استخدام النص بامان في اي استعلامات او طباعة للشاشة بدون قلق
ملاحظه :/
بخصوص تأمين قيم المتغيرات فيجب تأمين جميع ما يتم استقدامه من المستخدم سواءاً عن طريق المصفوفة $_GET أو المصفوفة $_POST
ولكن تختلف طريقة المعالجة فمثلا لو كنت تتوقع ان يحتوي المتغير على INTEGER أو عدد صحيح فيستحسن استخدام الدالة intval حيث ترجع الدالة القيمة الصحيحة للمتغير أو القيمة صفر لو كان في المتغير اي شيء غير عدد صحيح..
أما بالنسبة للنصوص فيستحسن استخدام الدالة addslashes() مع trim() عند تنفيذ الاستعلامات (لتجنب أخطار SQL INJECTION)
و
htmlentites() و trim() عند الطباعة للمتصفح (لتجنب أخطار XSS)
مثال آخر
التطبيق على المتغيرات التاليه
رمز PHP:
$row[vi]
$row[id]
$row[name]
التطبيق
رمز PHP:
$row['vi'] = make_safe($row['vi'];
$row['id'] = make_safe($row['id'];
$row['name'] = make_safe($row['name'];
رمز PHP:
function make_safe($str)
{
return htmlspecialchars(addslashes(trim($str)));
}
طريقة الاستخدام:
رمز PHP:
$safe_string = make_safe($_GET['user_input']);
بعد ذلك يمكنك استخدام النص بامان في اي استعلامات او طباعة للشاشة بدون قلق
ملاحظه :/
بخصوص تأمين قيم المتغيرات فيجب تأمين جميع ما يتم استقدامه من المستخدم سواءاً عن طريق المصفوفة $_GET أو المصفوفة $_POST
ولكن تختلف طريقة المعالجة فمثلا لو كنت تتوقع ان يحتوي المتغير على INTEGER أو عدد صحيح فيستحسن استخدام الدالة intval حيث ترجع الدالة القيمة الصحيحة للمتغير أو القيمة صفر لو كان في المتغير اي شيء غير عدد صحيح..
أما بالنسبة للنصوص فيستحسن استخدام الدالة addslashes() مع trim() عند تنفيذ الاستعلامات (لتجنب أخطار SQL INJECTION)
و
htmlentites() و trim() عند الطباعة للمتصفح (لتجنب أخطار XSS)
مثال آخر
التطبيق على المتغيرات التاليه
رمز PHP:
$row[vi]
$row[id]
$row[name]
التطبيق
رمز PHP:
$row['vi'] = make_safe($row['vi'];
$row['id'] = make_safe($row['id'];
$row['name'] = make_safe($row['name'];