2013-12-13 3 views
0

Панель администратора работает нормально для обычных пользователей! Для доступа к нему требуется пароль, но когда я обращаюсь к нему с помощью http-редактора acunetix, он открывает панель администратора без проверки. Я использую функцию, чтобы проверить, зарегистрирован ли администратор. Если нет, то перенаправляется на страницу входа! Вот код функции, пожалуйста, помогите мне в этом! Благодарю.Доступ к панели администратора веб-сайта осуществляется без проверки

->full() функция mysqli_real_escape_string(htmlspecialchar());

->acunetix хорошо тестер уязвимости приложений.

function admin_check() { 
global $users, $mysqli; 

if(isset($_COOKIE['username'])){ 
    $username = full($_COOKIE['username']); 
    $password = full($_COOKIE['password']); 
    $id = full($_COOKIE['id']); 
    if(is_numeric($id)){ 
     $id = $id; 
      if($id < 0){ 
       $id = (-1)*$id; 
      } 
    } 
    else { 
     $id = 10; 
    } 


    $query = "SELECT * FROM $users WHERE username = '{$username}' and password = '{$password}' and id = $id "; 
    $query_process = mysqli_query($mysqli, $query); 
     if(!$query_process){ 
      die_message("There was some error checking admin login"); 
     } 

    $check_rows = mysqli_num_rows($query_process); 
    if($check_rows != 1){ 
     header("location: login.php"); 
    } 
    while($rows = mysqli_fetch_assoc($query_process)){ 
     $admin_role = $rows['admin_role']; 
    } 
    if($admin_role != 1){ 
     header("location: logout.php"); 
    } 


}//end of first if 

else { 


    header("location: login.php"); 
} 
}// end of function 
+3

Вы сохраняете критерии входа ** в файлы cookie **. Facepalm! –

+1

Прошли ли какие-либо отладки, чтобы сузить проблему? Является ли инструмент acunetix каким-то образом причиной того, что страница генерирует выходные данные перед заголовками, так что они больше не работают? Вы могли бы подумать, что у вас нет заголовков управления функциями, а функция просто возвращает логическое значение в отношении того, является ли пользователь администратором и имеет перенаправление ручек основной прикладной логики. –

+1

Имя пользователя и пароль на основе файлов cookie? Совсем не хорошо. Вы лучше всего помещаете свой сайт «в ожидании», пока не исправите это и не будете использовать другой метод. –

ответ

0

я предполагаю, что одна ошибка может быть потому, что скрипт продолжает выполнение даже после того, как
заголовок («местоположение: login.php»);
Возможный способ удалить его функцией die(). просто добавьте die() после каждого перенаправления заголовка, который вы делаете.

Смежные вопросы