Сервер пропускает заголовки в PHP? Является ли проверка для пользователей $ _SESSION и перенаправление с расположением заголовка угрозой безопасности? - PullRequest
0 голосов
/ 26 октября 2019

У меня есть скрипт, где люди входят в систему, используя сеансы. Когда они заходят на определенный сайт (например, private.php), скрипт php проверяет, вошел ли пользователь в систему и является ли он пользователем определенного типа.

Если нет, пользователь перенаправляется на индекс. php

if ( isset( $_SESSION['user_id'] ) &&  in_array(11, $_SESSION['types'])) {
        } else {
        header("Location: index.php");
    }

Кажется, что это нормально работает для обычного пользователя, но я заметил, что когда я использую cron, чтобы позволить серверу запустить private.php в определенное время дня,

header("Location: index.php");

не соблюдается. То есть местоположение не перемещается в index.php, а скрипт продолжает работать.

Я пробовал это:

file_put_contents('log.txt', "before header" . PHP_EOL , FILE_APPEND);
header("Location: index.php"); 
file_put_contents('log.txt', "after header" . PHP_EOL , FILE_APPEND);

, и были написаны и "до заголовка", и "после заголовка"в log.txt.

Если я хочу, чтобы private.php оставался приватным, является ли моя текущая установка угрозой безопасности? Может ли кто-нибудь получить доступ к веб-сайту и пропустить заголовки? Будет ли добавление умереть ();после функции заголовка улучшить безопасность?

...