Есть ли уязвимости в данном коде?
if (isset($_COOKIE['lang'])) {
$language = $_COOKIE['lang'];
$result = "en";
if (in_array($language, $LANGS)) {
$result = $language;
}
@setcookie("lang", $result, time() + 14 * 24 * 3600, "/");
include_once("../sys/lang/".$result.".php");
} else {
$language = "en";
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
$result = "en";
if (in_array($language, $LANGS)) {
$result = $language;
}
@setcookie("lang", $result, time() + 14 * 24 * 3600, "/");
include_once("../sys/lang/".$result.".php");
}
Проверяйте куку не на существование, а на пустоту. Плюс размер вашего кода можно уменьшить.
Готовый вариант:
$result = 'en';
if(!empty($_COOKIE['lang']) && in_array($_COOKIE['lang'], $LANGS)) {
$result = $_COOKIE['lang'];
}else if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (in_array($language, $LANGS)) $result = $language;
}
setcookie('lang', $result, time() + 14 * 24 * 3600, '/');
include_once('../sys/lang/'.$result.'.php');
Не понятно что вы хотели бы услышать, но конечно же не безопасно, простой кайс взлома.
Содержимое test.php
<?php
echo 'test';
Для PHP7+ можно использовать оператор объединения с null ??
.
Будет так:
$result = $_COOKIE['lang'] ?? (
isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : 'en'
);
if (!in_array($result, $LANGS)) $result = 'en';
setcookie('lang', $result, time() + 14 * 24 * 3600, '/');
include_once('../sys/lang/'.$result.'.php');
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В общем я отправляю GET запрос с приставкой https:// на свой хост на котором установлен SLL сертификат c поддержкой HSTS, SSI, Wildcard и проверка подлинности...
Подскажите, пожалуйста, как сделать так, чтобы после логина в админку Wordpress параллельно происходил выход на других устройствах