Является ли следующий безопасный способ защиты только области пользователя?
if(!isset($_SESSION['username'])){redirect(SITE_ROOT . 'st_pages/login/');}
с помощью:
function redirect($url) { header('Location: ' . $url); exit('<a href="' . $url . '">Redirecting you to: ' . $url . '</a>'); }
да, это безопасно
хотя header () ничего не прекращает, но exit () действительно завершает скрипт. это единственная цель этой функции
Часть перенаправления может быть выполнена таким образом и должна быть безопасной.
Интересный вопрос заключается в том, насколько безопасно просто проверять имя пользователя в сеансе. Это зависит от того, что делают предыдущие строки скрипта.
Второй интересный вопрос, конечно же, в том, насколько критический несанкционированный доступ к этой области будет и сколько работы вы хотите инвестировать в безопасность.
Обычно я использую:
<?php die(header("Location: page.php")); ?>
Независимо от того, лучше ли это делать, я не утверждаю! Кроме того, как сказал b_i_d, я лично не буду проверять сеанс, проверяя имя пользователя, поскольку он не полностью безопасен … нельзя ли редактировать сеансы? Обычно я бы сохранил имя пользователя и пароль (конечно, MD5, конечно), а затем запустил это для базы данных, чтобы узнать, существует ли запись с этими подробностями.