В моих скриптах для работы с базой дыннх используется класс для работы с базой данных. За безопасность (обработку переменных перед вставкой в запрос mysql) отвечает одна функция:
function escape($var)
{
$var = trim($var);
$var = strip_tags($var);
$var = mysql_real_escape_string($var);
$var = "'" . $var . "'";
return $var;
}
т.е. запрос будет в виде:
$DB->query('SELECT * FROM `base` WHERE `name` = '.$DB->escape($_POST['name']).';');
Достаточно ли такой обработки для полной уверенности в безопасни базы?
Мой скрипт взломали, никак не могу найти уязвимость, решил спросить совета у профессионалов. Надеюсь на вашу помощь.
Зарание спасибо.
Спустя 2 часа, 15 секунд (1.06.2011 - 18:24) inpost написал(а):
desalftr
Врядли там, где стоит mysql_real_escape_string - можно взломать. Ищи другие пропущенные места, либо как альтернативу, введённые записи в БД могут уже содержать какой-то скрипт вредоносный, который безопасно был добавлен, но опасен при выводе. Посмотри данные, которые заносились последнее время в БД, может там что-то необычное?
И последнее, а подробнее нельзя сказать, как был взломан? 2 недели назад у хостеров была эпидемия и вконце дописывался JS скрипт, но это было с их стороны.
Врядли там, где стоит mysql_real_escape_string - можно взломать. Ищи другие пропущенные места, либо как альтернативу, введённые записи в БД могут уже содержать какой-то скрипт вредоносный, который безопасно был добавлен, но опасен при выводе. Посмотри данные, которые заносились последнее время в БД, может там что-то необычное?
И последнее, а подробнее нельзя сказать, как был взломан? 2 недели назад у хостеров была эпидемия и вконце дописывался JS скрипт, но это было с их стороны.
Спустя 21 час, 22 минуты, 27 секунд (2.06.2011 - 15:47) desalftr написал(а):
Цитата |
Врядли там, где стоит mysql_real_escape_string - можно взломать. |
т.е. никой дополнительной обработки или проверки не требуется?
Цитата |
Ищи другие пропущенные места, либо как альтернативу, введённые записи в БД могут уже содержать какой-то скрипт вредоносный, который безопасно был добавлен, но опасен при выводе. |
всмысле уже содержать?
Цитата |
Посмотри данные, которые заносились последнее время в БД, может там что-то необычное? |
смотрел, ничего содержащего похожего на вредоносный код не обнаружил.
Цитата |
И последнее, а подробнее нельзя сказать, как был взломан? |
Как взломан остается загадкой. Взлом был на разных серверах. Скрипт не работает с файлами или чем-то подобным, только с MySQL. Все переменные перед добавлением в запрос обрабатыватся функцией, которая описана выше. При взломе был получен доступ к базе данных, возможно и к файлам.
Хостеры говорят, что у них нет дырок, предлагают искать их у себя. Какие еще существуют способы взлома?
Спустя 49 минут, 40 секунд (2.06.2011 - 16:37) killer8080 написал(а):
Цитата (desalftr @ 2.06.2011 - 15:47) |
Хостеры говорят, что у них нет дырок, предлагают искать их у себя. Какие еще существуют способы взлома? |
слушай их больше, у меня как то ломанули сайт через хостерскую cpanel, которой я кстати практически не пользовался. В ТП тоже говорили что у них всё нормально, и такого быть не может но факт остаётся фактом.
Спустя 1 минута, 55 секунд (2.06.2011 - 16:39) desalftr написал(а):
Цитата |
Какие еще существуют способы взлома? |
я про типы уязвимостей самих скриптов, а не сервера. Может быть есть какой-то список уязвимостей, который можно использовать при написании кода?
Спустя 21 час, 4 минуты, 27 секунд (3.06.2011 - 13:43) desalftr написал(а):
никто не подскажет? ((
Спустя 2 часа, 17 минут, 35 секунд (3.06.2011 - 16:01) waldicom написал(а):
Цитата (desalftr @ 2.06.2011 - 13:47) | ||
т.е. никой дополнительной обработки или проверки не требуется? |
Помнится, обсуждали уже. Если все совпадет, то можно сломать даже там, где используется mysql_real_escape_string(). Один из вариантов, например, это когда скрипт ожидает целое число и в запросе не используются кавычки.
Спустя 1 час, 30 минут, 48 секунд (3.06.2011 - 17:31) inpost написал(а):
desalftr
Кто-то получил доступ к БД и подредактировал записи в БД? - так был взломан.
Вот у меня сейчас пароли от миллиарда пользователей, и они не знают, взломал ли их кто-нибудь, или нет. Я должен это как-то засветить, что произошел взлом, вот и я от тебя хочу узнать, что сделал такого хакер, что ты понял, что сайт был взломан.
Кто-то получил доступ к БД и подредактировал записи в БД? - так был взломан.
Вот у меня сейчас пароли от миллиарда пользователей, и они не знают, взломал ли их кто-нибудь, или нет. Я должен это как-то засветить, что произошел взлом, вот и я от тебя хочу узнать, что сделал такого хакер, что ты понял, что сайт был взломан.
Спустя 2 дня, 21 час, 46 минут, 45 секунд (6.06.2011 - 15:18) desalftr написал(а):
был изменен пароль одного из пользователей и получен доступ к аккунту, т.е. явно был получен доступ к базе данных
Спустя 6 минут, 30 секунд (6.06.2011 - 15:25) inpost написал(а):
desalftr
Ты так подробно описал, что за пользователь.
Вдруг это школьник с клуба, где забыл выйти из своего профиля, вот мелкая шпана и поменяла пароль + посмеялась над сайтом.
Ты так подробно описал, что за пользователь.
Вдруг это школьник с клуба, где забыл выйти из своего профиля, вот мелкая шпана и поменяла пароль + посмеялась над сайтом.
Спустя 58 минут, 1 секунда (6.06.2011 - 16:23) killer8080 написал(а):
Или аккаунт ломанули через службу восстановления пароля, например угадали контрольный вопрос или ещё что подобное.
Спустя 1 час, 6 минут, 13 секунд (6.06.2011 - 17:29) desalftr написал(а):
взлом был на двух разных серверах. был получен доступ к базе данных и файлам. вероятность того, что получили пароль от самого аккаунта хоста минимальна.
хочу проверить все скрипты, но для этого хорошо бы иметь какой-то список с перечислением возможных способов взлома скриптов...
хочу проверить все скрипты, но для этого хорошо бы иметь какой-то список с перечислением возможных способов взлома скриптов...
Спустя 1 час, 19 минут, 47 секунд (6.06.2011 - 18:49) killer8080 написал(а):
SQLinjection, XSS, CSRF для начала.