1 ضمیمه
مشکلات مربوط به NULL بایت ها
سلام
همانطور که می دانید مفسر PHP با زبان C نوشته شده و یک ویژگی از این زبان قدرتمند به ارث برده.
این ویژگی همان NULL Byte هست که در زبان C به معنی آخر رشته می باشد که در واقع یک رشته مجموعه ایی از کاراکتر هایی است که در آرایه قرار دارند و آخر هر رشته به کاراکتر NULL که 0\ می باشد ختم می شود.
این ویژگی در عملیات مربوط به سیستم فایل وجود دارد. (ممکن از نظر من جایی دیگر هم وجود داشته باشد)
ولی این یک باگ محسوب نمیشود اما میتونه در قالب هشدار به برنامه نویس هایی که از این مفهوم با خبر نیستند ابلاغ شود.
ضمیمه 125732مفهوم NULL Byte در C
برای رفع این نوع مشکل هم میتونین از یک لیست سفید استفاده کنید.
<?php
$file = $_GET['file']; // "../../etc/passwd\0"
if (file_exists('/home/wwwrun/'.$file.'.php')) {
// file_exists will return true as the file /home/wwwrun/../../etc/passwd exists
include '/home/wwwrun/'.$file.'.php';
// the file /etc/passwd will be included
}
?>
یک نمونه از لیست سفید برای جلوگیری از این حمله :
<?php
$file = $_GET['file'];
// Whitelisting possible values
switch ($file) {
case 'main':
case 'foo':
case 'bar':
include '/home/wwwrun/include/'.$file.'.php';
break;
default:
include '/home/wwwrun/include/main.php';
}
?>
http://php.net/manual/en/security.fi....nullbytes.php
نقل قول: مشکلات مربوط به NULL بایت ها
این کدی که نوشتین نه راه حل نال بایت هست، نه کدی که درش از روش لیست سفید استفاده شده باشه!
نقل قول: مشکلات مربوط به NULL بایت ها
نقل قول:
نوشته شده توسط
sara147
این کدی که نوشتین نه راه حل نال بایت هست، نه کدی که درش از روش لیست سفید استفاده شده باشه!
ممنون بابت توجهتون. درسته من مثالی از لیست سفید نگذاشتم ولی لینک رفرنس را گذاشتم که بیانگر همه چیز هست ولی در هر صورت افزوده شد.