LINUX.ORG.RU
ФорумAdmin

Sql injection?


0

1

В общем есть сайт, работает давно, пользователей примерно 300 в день.

В позапрошлый четверг рухнула его база (Mysql)

Поменял на бекап, вроде работает. В логах ничего не увидел.

Сейчас посмотрел на логи за прошлую неделю, а там - Table 'tarampampam' is marked as crashed and should be repaired для 7 таблиц сайта.

И тоже в четверг, но только прошлый.

Сегодня тоже четверг, пока всё в порядке, но это случалось после конца рабочего дня.

Вопрос: Можно ли с помощью SQL Injection порушить таблицы?

Фирма,которая писала CMS говорит, что у неё всё Ок, проблем не видит (в смысле дыр)

Как с этим бороться?

Ниже часть лога проверялки на дыры.

3:
 $data = q_assoc_row('SELECT * FROM `'. module_contacts::$tbl_contacts_data .'` WHERE `id`="'. $_GET['id'] .'"');
 SQL Injection!
 
/project/modules/sessions/module.php
 
271:
 $sid = $_COOKIE[$stngs['cookie_name']];
 
/project/modules/sessions/module.php
 
284:
 WHERE `sid` = "'. $sid .'"'. ($assign2ip ? ' AND `ip` = "'. IP_LONG .'"' : NULL) . ($assign2agent ? ' AND `agent` = "'. md5(AGENT) .'"' : NULL)
 SQL Injection!
 
/project/modules/sitemap/p/sitemap/_ql_delete.php
 
3:
 QuickLinks::delete($_GET['hash']);
 
/project/modules/sitemap/lib/page_rename_history.php
 
72:
 public static function delete($page_id) {
 
/project/modules/sitemap/lib/page_rename_history.php
 
76:
 WHERE `page_id` = "'. $page_id .'"'
 SQL Injection!
 


Вопрос: Можно ли с помощью SQL Injection порушить таблицы?

Нет. Пропало питание? Закончилось место?

goingUp ★★★★★ ()

Как с этим бороться?

Поменять тип таблиц на innoDB

goingUp ★★★★★ ()
WHERE `id`="'. $_GET['id'] .'"'

вот за такое пыховцев казнят. нельзя из ГЕТ параметры сразу в запрос конкатенировать.

bvn13 ★★★★★ ()
Ответ на: комментарий от goingUp

Места много, с питанием - ок, остальные сайты/базы работают, Raid в порядке.

mycop ()
Ответ на: комментарий от goingUp

[должны быть] включены дурацкие magic_quotes_gpc

Они дырявые, надо либо эскейпить с учетом кодировки перед конкатенацией, либо биндить и/или через плейсхолдеры PDO передавать.

$data = q_assoc_row(

Это вообще ржака - тупая ф-ция, в которой либо объявлен какойнить global $_db; либо не объявлен и там юзается последний активный коннект к БД автоматом.

Фирма,которая писала CMS

Если это фирменный продукт, тогда я Балерина. Даже мой велосипед в разы лучше.

deep-purple ★★★★★ ()
Ответ на: комментарий от mycop

Ну и что делать - закрывать дыры своими руками, покуда сам их нашел, раз авторы отказываются.

deep-purple ★★★★★ ()
Ответ на: комментарий от mycop

Ну вобщем таблицы могли повредится из-за креша MySQL. И, теоритически, креш можно вызвать через инъекцию, заюзав баг. Но вряд ли так было.

goingUp ★★★★★ ()
Ответ на: комментарий от mycop

MyISAM

У меня лет 5 назад была похожая история с говно-джумлой. Раз в день слетало пару таблиц по непонятной причине. Проблему не решил а обошел: выбросил мускуль, поставил MariaDB, конвертнул все таблицы в Aria формат и проблема исчезла. Сторедж энджин Aria умеет автоматом себя чинить, к тому же он является drop in replacement MyISAM.

iron ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.