Filesystem Security
سنتعرف في هذا الدرس علي الحماية والتشكيك في الملف والتفريق بين الكود السليم والكود القابل للتهكير و الاستغلال
العناية بالملفات التي تقرا من قبل المستخدمين والتاكد من انها امنه
فنبدأ
شفرة حذف ملف تعتبر شفرة ضعيفة جدا
كود PHP:
<?php
$userfile = $_POST['user_submitted_filename'];
$username = $_POST['user_submitted_name'];
$homedir = "/home/$username";
// كود حذف الملف
unlink("$homedir/$userfile");
echo "The file has been deleted!";
?>
شفرة حذف ملف تعتبر اكثر حمايه
يوجد شيئ يجب ان ياخد بعين الاعتبار وهو ان يتم فحص جميع المتغيرات قبل الاقدام علي اي شي
كود PHP:
<?php
$username = $_SERVER['REMOTE_USER'];
$userfile = basename($_POST['user_submitted_filename']);
$homedir = "/home/$username";
$filepath = "$homedir/$userfile";
if (file_exists($filepath) && unlink($filepath)) {
$logstring = "Deleted $filepath\n";
} else {
$logstring = "Failed to delete $filepath\n";
}
$fp = fopen("/home/logging/filedelete.log", "a");
fwrite($fp, $logstring);
fclose($fp);
echo htmlentities($logstring, ENT_QUOTES);
?>
الكود في الاعلي يقوم بفحص والتشكيك في الامر ومن تم يقوم بتسجيل الحذف في ملف معين
شفرة حذف ملف مع التاكد من ان اسم الملف لايوجد به اي شي غريب
كود PHP:
<?php
$username = $_SERVER['REMOTE_USER'];
$userfile = $_POST['user_submitted_filename'];
$homedir = "/home/$username";
$filepath = "$homedir/$userfile";
if (!ctype_alnum($username) || !preg_match('/^(?:[a-z0-9_-]|\.(?!\.))+$/iD', $userfile)) {
die("Bad username/filename");
}
//etc...
?>
انتهي الدرس مع الدرس القادم باذن الله
[ Datebase Security ]
http://www.php.net/manual/en/security.filesystem.php
سلامات