Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: sql инъекция
Форумы портала PHP.SU » PHP » Программирование на PHP » sql инъекция

Страниц (3): [1] 2 3 »
 

1. Hunter - 26 Декабря, 2009 - 03:34:46 - перейти к сообщению
как от нее оградиться? достаточно простой проверки на недопустимые символы в водимой строке?
если есть готовый код поделитесь??? (неохота на это отвлекаться...)
))
2. Вездеход - 26 Декабря, 2009 - 09:30:35 - перейти к сообщению
нельзя на такие вещи "не отвлекаться"....
иначе наберете косяков много.

все данные, которые вы получаете "из вне" - через куки, GET или POST надо проверять. иначе будут проблемы с верностью работы сайта или данными..

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

ну вот как то так =)
3. Phantik - 26 Декабря, 2009 - 09:36:27 - перейти к сообщению
Еще не лишним будет ограничить пользователя, под которым конектишься к базе, минимально необходимым набором прав.
4. bems - 26 Декабря, 2009 - 09:48:36 - перейти к сообщению
Кхм, всем привет, давно пользуюсь вашим сайтом, решил хоть на форуме регнуться)

Честно говоря с недавних пор тоже начал волновать вопрос по поводу инъекций. С GET-числовыми запросами у мну никаких проблем нет, а вот со страницей регистрации очень опасаюсь. Кто нибудь скажет, достаточно ли обрабатывать данные с помощью mysql_real_escape_string?
5. Вездеход - 26 Декабря, 2009 - 11:47:51 - перейти к сообщению
bems пишет:
Честно говоря с недавних пор тоже начал волновать вопрос по поводу инъекций. С GET-числовыми запросами у мну никаких проблем нет, а вот со страницей регистрации очень опасаюсь. Кто нибудь скажет, достаточно ли обрабатывать данные с помощью mysql_real_escape_string?

читайте мой пост выше. если не поможет - можно еще раз... если уж и снова не поможет - поищите еще похожие темы... их было много.

Phantik пишет:
Еще не лишним будет ограничить пользователя, под которым конектишься к базе, минимально необходимым набором прав.

права, как таковые влияют на функционал. напрямую доступ к базе я нигде не делаю например... глупо и опасно имхо
6. Мелкий - 26 Декабря, 2009 - 12:11:01 - перейти к сообщению
Вездеход пишет:
права, как таковые влияют на функционал. напрямую доступ к базе я нигде не делаю например... глупо и опасно имхо

Но и права полезно ограничивать, т.к. к субд доступ можно получить не только от вами написанного скрипта, и взломать можно не только скрипт, но и сам http-сервер, или любой другой сервис, смотрящий наружу. И вот тогда, чтобы не потерять базу, нужно ограничивать пользователя базы в правах, т.к. его логин и пароль - в скриптах, у которых права на чтение, зачастую, есть для всех.
7. Hunter - 26 Декабря, 2009 - 13:27:38 - перейти к сообщению
Вездеход
а нельзя ограничиься просто проверкой на недопустимые символы (именно как защита от инъекций) ??
8. Phantik - 26 Декабря, 2009 - 13:47:37 - перейти к сообщению
Основная идея защиты от инъекций, это что бы в параметры запроса не попадал SQL - код.
А если бы и попадал то представлялся серверу как параметр - строка, а не часть SQL запроса.
Т.е. проверять надо что бы пользователь, например в поле
Name не вводил строки вида "44'; DROP MyTable;"

Так же никогда не выводить пользователю результаты функции mysql_error();
9. Hunter - 26 Декабря, 2009 - 15:07:05 - перейти к сообщению
Phantik
вот про это я и спрашиваю, ведь в запросе всегда присутствуют определенные символы..просто запретить их ввод пользователю и все..
10. Champion - 26 Декабря, 2009 - 15:11:06 - перейти к сообщению
Hunter пишет:
просто запретить их ввод пользователю и все..
А если пользователь хочет никнейм O'Konnor ? Не надо символы запрещать, просто через функции, которые тебе выше привели, прогоняй данные.
11. Hunter - 26 Декабря, 2009 - 15:28:50 - перейти к сообщению
Champion
вот теперь осознал приемущество этих функций..я только с ними не совсем разобрался..результат возвращаемый функцией будет безопасной для скрипта строкой? я правильно понял?
12. Champion - 26 Декабря, 2009 - 15:39:10 - перейти к сообщению
Да. Все строковые вещи, которые ты вносишь в базу прогоняй через эти функции. Цифры достаточно просто обработать (int), intval()...
13. Hunter - 26 Декабря, 2009 - 16:00:17 - перейти к сообщению
Champion
спс)) все понял..
14. bems - 27 Декабря, 2009 - 15:03:29 - перейти к сообщению
Да, тож благодарю за консультацию) С числовыми данными пока так и делаю, а вот со string постоянно какое-то недоверие.
А ещё где-то я читал что якобы никогда не рассчитывайте на магические скобки, они не помогут. Неужели это правда?
15. valenok - 27 Декабря, 2009 - 15:23:18 - перейти к сообщению
Это правда.
И не скобки, а кавычки.

 

Powered by ExBB FM 1.0 RC1