Правильная проверка URL, введенного в адресную строку браузера, на безопасность?
При разработке одного из своих очередных небольших проектов задался вопросом безопасности поступивших от пользователя данных, а точнее URL-а, введенного в адресную строку браузера.
Если вкратце, то сайт работает по шаблону MVC: URL разбивается на сегменты, один из которых указывает на нужный контроллер, другой на действие и т.д. Так вот, прежде чем начать работать с URL-ом, хотелось бы его проверить на корректность введенных данных, и речь идет даже не о валидности, а именно о безопасности, т.е. чтобы не было в адресе никаких "опасных" строк.
Кто-нибудь решал такую задачу, не существует ли какого универсального метода? Ну, скажем, чтобы исключить из адреса всякие там SQL-инъекции, обозначения протокола и др. "страшные" слова.
Я использую такой вариант.
Если у тебя что-то типо этого
/index.php?page=album&albumId=21&photoId=3547336
Каждый параметр разбери по $_GET['album'], $_GET['page'], $_GET['photo']
И проверяй на то чтобы в albumId & photoId не было никаких других символов кроме Int.
Чтобы в page не было символа '
Или чтобы не разбирать каждый параметр можно сделать так: вместо $_GET -> $_SERVER["QUERY_STRING"];
В браузере делать можно, но бесполезно. Не все браузеры используют одинаковые плагины и не все взломы ведутся через браузеры. Тем более атакуется сервер. Значит и проверки нужно делать на сервере.
Получаем массив введенных значений в адресе браузера:$ar = explode('/', $_SERVER['request_uri']);
полученный массив нужно проверить на правильность ввода, что бы контроллеры существовали, требуемые данные тоже и тогда реагировать на обработки этого запроса.
Помимо этого нужно еще проверить массив $_POST. В нем тоже могут передать данные необходимые для взлома.