Мне интересно, насколько безопасно использовать этот код. В частности, $_SERVER['REMOTE_ADDR']
и $_SERVER['HTTP_USER_AGENT']
Я занимаюсь некоторыми исследованиями по этому вопросу. Насколько я могу судить, должно быть безопасно просто сравнивать переменные, как я здесь? Я должен беспокоиться только об их значениях при их использовании для запуска SQL-запросов или при отображении их содержимого на моих страницах?
В зависимости от того, где я их использую, я должен запустить mysqli_real_escape_string
или htmlspecialchars
.
Когда следует использовать функции trim
или stripslashes
?
Я просто пытаюсь защитить свой сайт от взлома наиболее очевидными/распространенными способами. Не требует огромной защиты, но я бы хотел, чтобы она была, по крайней мере, прилично защищена!
Что-нибудь я не замечаю или делаю неправильно? Есть ли какой-нибудь путеводитель, объясняющий большую часть этого?
session_start();
if (!isset($_SESSION['logged_in'])) {
$_SESSION['logged_in'] = false;
$_SESSION['ip_address'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['user_agent'] = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : '';
} else {
if ($_SESSION['ip_address'] !== $_SERVER['REMOTE_ADDR'] || ($_SESSION['user_agent'] !== $_SERVER['HTTP_USER_AGENT'])) {
session_destroy();
header('Location: view/index.php');
die();
}
}
Вы имеете в виду '$ _SERVER', а не' $ _SESSION'. – Barmar
'$ _SERVER ['REMOTE_ADDR']' поступает с веб-сервера и сообщает вам, что такое подключенный IP-адрес. '$ _SERVER ['HTTP_X']' значения поступают из HTTP-заголовка, отправленного клиентом, и его можно каким-либо образом манипулировать. Эти значения не должны быть доверенными и должны обрабатываться как обычные пользовательские входы. –
Да, упс, исправлено –