а как вы защищаете игровой сервер от SQL injection? [РЕШЕНО]

Сеть в Unity3D

Re: а как вы защищаете игровой сервер от SQL injection?

Сообщение Alergy 30 авг 2011, 22:56

Не понимаю зачем вообще логировать чат в таблице.
Как показывает практика, модератор может следить за чатом но смотреть логи до этого дело не доходило.

а вообще можно шерстить строку на вхождение основных операторов мускула например .
Alergy
UNец
 
Сообщения: 16
Зарегистрирован: 15 дек 2010, 09:48

Re: а как вы защищаете игровой сервер от SQL injection?

Сообщение Toshik 31 авг 2011, 09:28

Alergy писал(а):Не понимаю зачем вообще логировать чат в таблице.


Не поверишь, но беглый анализ логов чатов позволит обнаружить неведомые доселе баги в игре, про которые никто из игроков особо не спешит рассказывать администрации, но охотно обсуждают между собой ;)
Аватара пользователя
Toshik
UNец
 
Сообщения: 36
Зарегистрирован: 17 июн 2010, 20:25
Откуда: Питер

Re: а как вы защищаете игровой сервер от SQL injection?

Сообщение Valter 06 сен 2011, 17:10

Ответ прост защита от SQL инъекций - регулярные выражения. Если использовать php они там уже встроены, ничего придумывать не надо. Если Вы используете к примеру c++ для своего сервера. Там это дело не встроено придётся писать самому. Обработкой таких последовательностей (как вариант) занимаются конечные автоматы, есть ещё другие способы, но конечные автоматы вроде самые легкие. Советую почитать про них, если разберётесь, то спокойно будете обрабатывать любую последовательность символов на те или иные признаки.

Хотя я где-то читал, что написать свой конечный автомат сможет программист любой квалификации. На тот момент я осознал, что я совсем не программист и что мне учиться и учиться :). Так что дерзайте.
Valter
UNец
 
Сообщения: 33
Зарегистрирован: 12 янв 2011, 18:51

Re: а как вы защищаете игровой сервер от SQL injection?

Сообщение Woolf 06 сен 2011, 21:03

А сервер на чём, извините? Для java - решение простейшее - не использовать запросы в стиле "insert into users (name) values ("+username+")" а использовать

Код: Выделить всё
         qry = "INSERT INTO users (name) VALUES(?)";

         PreparedStatement pstmt = db.getConnect().prepareStatement(qry);

         pstmt.setString(1, username);
                        pstmt.executeUpdate();


И все инъекции курят в сторонке )
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: а как вы защищаете игровой сервер от SQL injection?

Сообщение Guyver 07 сен 2011, 07:26

мужики, переливаете из пустого в порожнее не читая предидущих постов ...
какие регэкспы ... причём тут конечные автоматы? ...

Woolf писал(а):А сервер на чём, извините? Для java - решение простейшее - не использовать запросы в стиле "insert into users (name) values ("+username+")" а использовать
.....
.....
И все инъекции курят в сторонке )


это и есть параметризация запросов (то на чём порешили на 1й странице в 1х постах) ... какбэ .... браво

пожалуй чтобы не вносить сумятицу, напишу что вопрос решённый .. т.к. новых интересных идей не встречается.
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: а как вы защищаете игровой сервер от SQL injection? [РЕШЕНО]

Сообщение Neodrop 07 сен 2011, 08:17

Можно хранить тексты в бинарном контейнере и чихать на то, что в них наваял злоумышленник. Нэ ?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: а как вы защищаете игровой сервер от SQL injection? [РЕШЕНО]

Сообщение sp00n 07 сен 2011, 15:53

Neodrop писал(а):Можно хранить тексты в бинарном контейнере и чихать на то, что в них наваял злоумышленник. Нэ ?

Можно и в тексте хранить, но оригинальный тескт кодировать/шифровать. Единственный минус в обоих случаях - это просмотр человеком данных таблицы без конвертера обратно в читаемый текст :)
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: а как вы защищаете игровой сервер от SQL injection? [РЕШЕНО]

Сообщение Neodrop 07 сен 2011, 18:17

Шифровать особо не нужно. Достаточно заменить все "e" на что-нить типа Ъ
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: а как вы защищаете игровой сервер от SQL injection? [РЕШЕНО]

Сообщение sp00n 08 сен 2011, 11:32

Действительно. Или на русские "е", "о" и пр. :) Спасиб
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: а как вы защищаете игровой сервер от SQL injection? [РЕШЕНО]

Сообщение gnoblin 08 сен 2011, 13:21

такс, не понял про Ъ... :-\
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: а как вы защищаете игровой сервер от SQL injection? [РЕШЕНО]

Сообщение Neodrop 08 сен 2011, 14:07

Подумай есчо. :!!
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: а как вы защищаете игровой сервер от SQL injection? [РЕШЕНО]

Сообщение Guyver 08 сен 2011, 14:27

если это будет именно иньекция ... в синтаксисе SQL ... то получится подстановка битого (не валидного) запроса ... (при замене части символов)

что приведёт к как минимум эксепшену (его можно отловить .. но операция записи сфелится и малоли что там потом вырастет при такой фигне)
лучше передавать инпут юзера параметром в запросе и бед не знать.

или менять все управляющие символы тогда уж .. в синтаксисе SQL ... такие как ", ', ;.
таким образом мы обломаем начало самой иньекции.

либо шифровать так, чтобы мать родная не узнала .. и то рискуем нарваться на управляющие символы после шифрования.
опять же нужно строку передавать как параметр в запросе а не как кусок текста.
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: а как вы защищаете игровой сервер от SQL injection? [РЕШЕНО]

Сообщение Neodrop 08 сен 2011, 16:30

Беседа смахивает на "Как защитить хреново спроектированный код от злоумышленника".
Я вообще не понимаю сути проблемы. Есть десяток путей для того, чтобы никогда не столкнуться с этой проблемой.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Пред.

Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3