<?php if (preg_match('/^[a-z0-9]+$/', $_GET['page'])) { $page = realpath('includes/'.$_GET['page'].'.php'); $tpl = realpath('templates/'.$_GET['page'].'.html'); if ($page && $tpl) { include $page; include $tpl; } else { // log error! } } else { // log error! } ?>
Насколько безопасно это сказать? Гумбо здесь, в Stack Overflow, написал это.
Динамическая безопасность
Я хочу услышать ваше мнение.
ура
Моя первая мысль не о безопасности, а о том, почему в мире вы бы это сделали?
Я бы сказал, что это довольно безопасно. Просто не позволяйте писать что-либо в этих папках. Файлы PHP традиционно находятся в корневом каталоге веб-сервера, с которого опасно начинать. Лучше было бы поместить файлы, загружаемые в область, которая абсолютно недоступна внешней стороне, если ошибка конфигурации или файл .htaccess отсутствуют.
вы включаете свой собственный код. насколько это безопасно?
Я мог видеть некоторые потенциальные проблемы там, особенно если переменная «page» содержала «..» или другие подобные вещи, которые могли позволить им увидеть то, что они не должны были видеть.
Я делаю что-то подобное на нескольких моих сайтах, но сначала я должен проверить «страницу», чтобы убедиться, что он ссылается на один из наборов разрешенных страниц.