|
|
|
| Смотрел статистику своего сайта и заметил, что очень часто попадаются запросы к моему сайту такого вида
http://site/?page=../../../../../../../../../../../etc/passwd
Я так понимаю, кто то что то ищет. Что можно в данном случае предпринять?
В параметре page передаётся номер страницы. | |
|
|
|
|
|
|
|
для: relikt
(04.03.2008 в 18:17)
| | Да, вас пытаются хакнуть. Скорее всего, пытается вас хакнуть какой-то недалекий товарищ, потому что если в page передается id страницы, то нужно делать SQL-injection, а не подмену пути.
Что делать? Не нервничать. Сделайте бэкап своего сайта, пройдитесь по местам, где что-то принимаете со стороны, провертье как у вас осуществляется защита. Чтобы все входящие данные проверялись. Самое плохое, что может случиться - ваш сайт на пару часов перестанет работать.
Ну и запишите ip вашего товарища. Пробейте по whios. Напишите его провайдеру. | |
|
|
|
|
|
|
|
для: SHAman
(04.03.2008 в 18:46)
| | ггг. У меня не используется БД... Можно не беспокоиться?
И тогда вопрос, для очистки совести, а как параметр page проверить на лишние вещи?
Пробовал так:
$_GET['page']) = isset($_GET['page']) ? trim($_GET['page'])) : "";
$_GET['page']) = substr($_GET['page']), 0, 5);
$_GET['page']) = htmlspecialchars(stripslashes($_GET['page'])));
|
Но даёт ошибку. | |
|
|
|
|
|
|
|
для: relikt
(04.03.2008 в 19:19)
| | Смотрю, опять четыре таких запроса. Кроме предлженного есть какие варианты защиты? | |
|
|
|
|
|
|
|
для: relikt
(04.03.2008 в 20:58)
| | 'page' у вас принимает только числовые значения? Если да, то используйте intval($_GET['page']);
если нет, то... навернео этого хватит... | |
|
|
|
|
|
|
|
для: relikt
(04.03.2008 в 20:58)
| | если в параметре page передаётся номер страницы то думаю достаточно проверки на число | |
|
|
|
|
|
|
|
для: AlexSol
(04.03.2008 в 21:25)
| | То есть мне вывод можно оформить так
if(isset($_GET['page']) && $_GET['page'] == intval($_GET['page']))
...
|
| |
|
|
|
|
|
|
|
для: relikt
(04.03.2008 в 21:42)
| |
if(isset($_GET['page']) && intval($_GET['page'])!=0) {
// ;
}
|
| |
|
|
|
|
|
|
|
для: relikt
(04.03.2008 в 18:17)
| |
<?
$page = ((isset($_GET['page'])) && ($_GET['page'] == (int)$_GET['page'])) ? (int)$_GET['page'] : null;
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(05.03.2008 в 10:43)
| | mihdan
Не все так однозначно для Вашего скрипта. Если page=0? | |
|
|
|
|
|
|
|
для: vitali
(05.03.2008 в 11:46)
| | А что у вас не существует страницы с id=0? | |
|
|
|
|
|
|
|
для: mihdan
(05.03.2008 в 11:52)
| | В том то и дело, что может существовать страница с id=0 (у меня, как правило, это главная), а Ваш скрипт возвращает 0 как при page=0, так и при page=abc | |
|
|
|
|
|
|
|
для: vitali
(05.03.2008 в 12:05)
| | Так page это ID страницы (число). При чем тут "abc" - ведь это и есть защита от атаки (передается только число, все что не число - к нему приводиться!) | |
|
|
|
|
|
|
|
для: mihdan
(05.03.2008 в 16:57)
| | А если нужно проверить не числовой параметр??? Как проверить такое? | |
|
|
|
|
|
|
|
|
для: kisit
(06.03.2008 в 08:54)
| | Вопрос был именно про числовые параметры! | |
|
|
|
|
|
|
|
для: kisit
(06.03.2008 в 08:54)
| | Вот вам замечательная книга | |
|
|
|
|
|
|
|
для: relikt
(04.03.2008 в 18:17)
| | Пытаются взломать даже не вас а хостера, цель извлечь пароли системных пользователей сайта. Этотому виду взлома уже сто лет в обед и он давно уже не работает ни на одном вменяемом хостинге. | |
|
|
|