رفع يك باگ خطرناك در فايل Admin.php
فايل Admin.php رو باز كنيد و به دنبال كد زير بگرديد:
پس از اين كد، كدهاي زير رو قرار دهيد:
اين باگ رو در سايت اصلي ديتالايف ديدم كه نوشته بود خطرناكه..!
نفهميدم كه اين باگ چي كار ميكنه..! (بخوام چيزي كه نوشته بود رو به فارسي معني كنم، يه چيزي تو اين مايه ها ميشه: [ نارسايي فيلتر كردن وارد شونده ي داده ها
]
فايل Admin.php رو باز كنيد و به دنبال كد زير بگرديد:
require_once (ENGINE_DIR.'/inc/init.php');
پس از اين كد، كدهاي زير رو قرار دهيد:
if($is_loged_in AND $_SERVER['HTTP_REFERER'] == '' AND !$_SESSION['dle_name'] ) {
$is_loged_in = FALSE;
} elseif ($is_loged_in AND $_SERVER['HTTP_REFERER'] != '' AND strpos( strtolower($_SERVER['HTTP_REFERER']), $config['admin_path'] ) === false) {
$allow_mod = array("editusers", "editnews", "iptools", "blockip");
$allow_action = array("edituser", "editnews");
if ($config['extra_login']) $allow_mod[] = "";
if (in_array($_GET['mod'], $allow_mod)) {
if (($_GET['action'] AND !in_array($_GET['action'], $allow_action)) OR $_GET['ifdelete']) $is_loged_in = FALSE;
} else $is_loged_in = FALSE;
} elseif ($is_loged_in AND strpos( strtolower($_SERVER['HTTP_REFERER']), "mod=editnews" ) !== false) {
if (@strpos( $_SERVER['HTTP_REFERER'], $_GET['id'] ) === false AND count($_GET) > 2 AND $_GET['mod'] != "editnews") $is_loged_in = FALSE;
}
if (!$is_loged_in) {
@session_destroy();
@session_unset();
}
$is_loged_in = FALSE;
} elseif ($is_loged_in AND $_SERVER['HTTP_REFERER'] != '' AND strpos( strtolower($_SERVER['HTTP_REFERER']), $config['admin_path'] ) === false) {
$allow_mod = array("editusers", "editnews", "iptools", "blockip");
$allow_action = array("edituser", "editnews");
if ($config['extra_login']) $allow_mod[] = "";
if (in_array($_GET['mod'], $allow_mod)) {
if (($_GET['action'] AND !in_array($_GET['action'], $allow_action)) OR $_GET['ifdelete']) $is_loged_in = FALSE;
} else $is_loged_in = FALSE;
} elseif ($is_loged_in AND strpos( strtolower($_SERVER['HTTP_REFERER']), "mod=editnews" ) !== false) {
if (@strpos( $_SERVER['HTTP_REFERER'], $_GET['id'] ) === false AND count($_GET) > 2 AND $_GET['mod'] != "editnews") $is_loged_in = FALSE;
}
if (!$is_loged_in) {
@session_destroy();
@session_unset();
}
اين باگ رو در سايت اصلي ديتالايف ديدم كه نوشته بود خطرناكه..!
نفهميدم كه اين باگ چي كار ميكنه..! (بخوام چيزي كه نوشته بود رو به فارسي معني كنم، يه چيزي تو اين مايه ها ميشه: [ نارسايي فيلتر كردن وارد شونده ي داده ها
تاریخ انتشار: 29 بهمن 1386
ارسال کننده: Mohammad_1ta
برچسب ها: is_loged_in, اين, FALSE, باگ, فايل, _SERVERHTTP_REFERER, Adminphp, nbspnbspnbspnbspif, strpos, false, editnews, نوشته, بود, چيزي, strtolower_SERVERHTTP_REFERER, elseif, خطرناك, ویرایش فایل
www.free-cms.ir، mohsen1385 و hm1368 و پنج نفر دیگر تشکر کردهاند.


اطلاعات