Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Взлом сайта?
 
 автор: relikt   (04.03.2008 в 18:17)   письмо автору
 
 

Смотрел статистику своего сайта и заметил, что очень часто попадаются запросы к моему сайту такого вида
http://site/?page=../../../../../../../../../../../etc/passwd
Я так понимаю, кто то что то ищет. Что можно в данном случае предпринять?
В параметре page передаётся номер страницы.

   
 
 автор: SHAman   (04.03.2008 в 18:46)   письмо автору
 
   для: relikt   (04.03.2008 в 18:17)
 

Да, вас пытаются хакнуть. Скорее всего, пытается вас хакнуть какой-то недалекий товарищ, потому что если в page передается id страницы, то нужно делать SQL-injection, а не подмену пути.

Что делать? Не нервничать. Сделайте бэкап своего сайта, пройдитесь по местам, где что-то принимаете со стороны, провертье как у вас осуществляется защита. Чтобы все входящие данные проверялись. Самое плохое, что может случиться - ваш сайт на пару часов перестанет работать.

Ну и запишите ip вашего товарища. Пробейте по whios. Напишите его провайдеру.

   
 
 автор: relikt   (04.03.2008 в 19:19)   письмо автору
 
   для: 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 в 20:58)   письмо автору
 
   для: relikt   (04.03.2008 в 19:19)
 

Смотрю, опять четыре таких запроса. Кроме предлженного есть какие варианты защиты?

   
 
 автор: DEM   (04.03.2008 в 21:24)   письмо автору
 
   для: relikt   (04.03.2008 в 20:58)
 

'page' у вас принимает только числовые значения? Если да, то используйте intval($_GET['page']);
если нет, то... навернео этого хватит...

   
 
 автор: AlexSol   (04.03.2008 в 21:25)   письмо автору
 
   для: relikt   (04.03.2008 в 20:58)
 

если в параметре page передаётся номер страницы то думаю достаточно проверки на число

   
 
 автор: relikt   (04.03.2008 в 21:42)   письмо автору
 
   для: AlexSol   (04.03.2008 в 21:25)
 

То есть мне вывод можно оформить так


  if(isset($_GET['page']) && $_GET['page'] == intval($_GET['page']))
...

   
 
 автор: Петр   (05.03.2008 в 05:34)   письмо автору
 
   для: relikt   (04.03.2008 в 21:42)
 

if(isset($_GET['page']) && intval($_GET['page'])!=0) {
 // ;
}

   
 
 автор: mihdan   (05.03.2008 в 10:43)   письмо автору
 
   для: relikt   (04.03.2008 в 18:17)
 


<?
$page 
= ((isset($_GET['page'])) && ($_GET['page'] == (int)$_GET['page']))  ? (int)$_GET['page'] : null;
?>

   
 
 автор: vitali   (05.03.2008 в 11:46)   письмо автору
 
   для: mihdan   (05.03.2008 в 10:43)
 

mihdan
Не все так однозначно для Вашего скрипта. Если page=0?

   
 
 автор: mihdan   (05.03.2008 в 11:52)   письмо автору
 
   для: vitali   (05.03.2008 в 11:46)
 

А что у вас не существует страницы с id=0?

   
 
 автор: vitali   (05.03.2008 в 12:05)   письмо автору
 
   для: mihdan   (05.03.2008 в 11:52)
 

В том то и дело, что может существовать страница с id=0 (у меня, как правило, это главная), а Ваш скрипт возвращает 0 как при page=0, так и при page=abc

   
 
 автор: mihdan   (05.03.2008 в 16:57)   письмо автору
 
   для: vitali   (05.03.2008 в 12:05)
 

Так page это ID страницы (число). При чем тут "abc" - ведь это и есть защита от атаки (передается только число, все что не число - к нему приводиться!)

   
 
 автор: kisit   (06.03.2008 в 08:54)   письмо автору
 
   для: mihdan   (05.03.2008 в 16:57)
 

А если нужно проверить не числовой параметр??? Как проверить такое?

   
 
 автор: vitali   (06.03.2008 в 09:30)   письмо автору
 
   для: kisit   (06.03.2008 в 08:54)
 

Воспользуйтесь фунцией:
http://ru2.php.net/manual/ru/function.gettype.php

   
 
 автор: mihdan   (06.03.2008 в 10:17)   письмо автору
 
   для: kisit   (06.03.2008 в 08:54)
 

Вопрос был именно про числовые параметры!

   
 
 автор: mihdan   (06.03.2008 в 10:38)   письмо автору
 
   для: kisit   (06.03.2008 в 08:54)
 

Вот вам замечательная книга

   
 
 автор: cheops   (07.03.2008 в 13:32)   письмо автору
 
   для: relikt   (04.03.2008 в 18:17)
 

Пытаются взломать даже не вас а хостера, цель извлечь пароли системных пользователей сайта. Этотому виду взлома уже сто лет в обед и он давно уже не работает ни на одном вменяемом хостинге.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования