|
Фильтрация входных данных.
|
| Автор |
Сообщение |
lazutov while (1==1);


Зарегистрирован: 30.04.2007 Сообщения: 3840
111220 
|
Добавлено: Вт, 30 Сен, 2008 17:45 Заголовок сообщения: Фильтрация входных данных. |
|
|
Здравствуйте.
Чем Вы лично в своих скриптах проверяете, например, выведенный пользователем отзыв в гостевую книгу?
Достаточно ли htmlspecialchars и addslashes при работе с Mysql?
Спасибо. _________________ сервис DNS | разные http, DNS и прочие утилиты |
|
| Вернуться к началу |
|
 |
Артур 11 1110 1000


Зарегистрирован: 22.01.2008 Сообщения: 1159 Откуда: Lietuva 7191 
|
Добавлено: Вт, 30 Сен, 2008 17:49 Заголовок сообщения: |
|
|
Чтоб вырезать теги я использую
strip_tags() _________________ Скрипты [PHP/JS] на заказ, в ЛС, недорого.
SAPE |
|
| Вернуться к началу |
|
 |
Alek$ 11 1110 1000


Зарегистрирован: 24.11.2007 Сообщения: 1136 Откуда: Новосибирск 26695 
|
|
| Вернуться к началу |
|
 |
Александр Михалицын Согнул ложку

Зарегистрирован: 22.08.2008 Сообщения: 860
18841 
|
Добавлено: Ср, 01 Окт, 2008 07:21 Заголовок сообщения: |
|
|
Alek$,
хм, а можно ли совершить SQL-инъект
если входящие данные обрабатываются через addSlashes?
Мне кажется нет... _________________ Пригласительные коды |
|
| Вернуться к началу |
|
 |
Gosudar Два пингвина

Зарегистрирован: 08.04.2007 Сообщения: 431
8014 
|
Добавлено: Ср, 01 Окт, 2008 08:31 Заголовок сообщения: |
|
|
Александр Михалицын можно.
addSlashes все лишь экранирует спецсимволы. _________________ R3-born |
|
| Вернуться к началу |
|
 |
[LP]LordPro.teus Призрак Лорда


Зарегистрирован: 26.07.2007 Сообщения: 5092
42282 
|
Добавлено: Ср, 01 Окт, 2008 10:39 Заголовок сообщения: |
|
|
А при простом mysql_escape_string, если все значения идут в апострофах (в них вроде всякая бяка вроде \n не может сработать принципиально...)? _________________

До выхода LiteDiary 0.3.0: парам-пам-пам-пам! Она уже здесь! |
|
| Вернуться к началу |
|
 |
Александр Михалицын Согнул ложку

Зарегистрирован: 22.08.2008 Сообщения: 860
18841 
|
Добавлено: Ср, 01 Окт, 2008 12:16 Заголовок сообщения: |
|
|
Gosudar,
ну вот.. тогда смысл юзать
всякие специфичные функции?
Есть аддслашес его и юзаем!
А все эти стрип тагс итд
это медленнее работает!  _________________ Пригласительные коды |
|
| Вернуться к началу |
|
 |
[LP]LordPro.teus Призрак Лорда


Зарегистрирован: 26.07.2007 Сообщения: 5092
42282 
|
Добавлено: Ср, 01 Окт, 2008 12:24 Заголовок сообщения: |
|
|
Александр Михалицын
тебе только что обьяснили, что провести SQL-иньекцию при addslashes - раз плюнуть  _________________

До выхода LiteDiary 0.3.0: парам-пам-пам-пам! Она уже здесь! |
|
| Вернуться к началу |
|
 |
Gosudar Два пингвина

Зарегистрирован: 08.04.2007 Сообщения: 431
8014 
|
Добавлено: Ср, 01 Окт, 2008 12:25 Заголовок сообщения: |
|
|
В большинстве случаев addslashes достаточно. Но...
Вот кстати ещё специфический пример когда addslashes не помогает - http://habrahabr.ru/blogs/webdev/40458/ |
|
| Вернуться к началу |
|
 |
Веденин Красные глаза


Зарегистрирован: 17.05.2007 Сообщения: 2066 Откуда: Самара 11733 
|
Добавлено: Пт, 03 Окт, 2008 02:55 Заголовок сообщения: |
|
|
Кстати я против SQL инекций кроме подобных функций использую раздление прав поьзователей, т.е. у меня есть пользователь, который имеет право только на команду Select в одной из MySQL баз, есть пользователь который имеет права только на команду Insert и т.д. В результате даже если сумеют сделать SQL инекцию команда скорее всего просто не выполнится (так как очень редко команда инекции совпадает с командой запроса), кроме того я никогда не даю одному пользователю прав больше чем на одну базу и стараюсь разделять данные, которые никогда не меняются или меняются только админом (типа страниц сайта или паролей) и данные, которые могут менять пользователи типа коментариев и соответсвенно делаю две разные базы с разными пользователями, в результате SQL инекция может изменить только неболшую часть данных. Естественно, скрипты админа спрятаны в директории с паролем и сами содержат кучу проверок до первого выполнения любого SQL запроса.
P.S. Конечно, иногда приходится делать несколько соединений на странице к MySql, зато это окупается безопасностью _________________ Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг |
|
| Вернуться к началу |
|
 |
Alek$ 11 1110 1000


Зарегистрирован: 24.11.2007 Сообщения: 1136 Откуда: Новосибирск 26695 
|
Добавлено: Пт, 03 Окт, 2008 05:52 Заголовок сообщения: |
|
|
Веденин
это уже параноидальный подход. Пользователей SELECT и INSERT стоит объединить как минимум для того, чтобы не создавать всякий раз два соединения, поскольку это довольно ресурсоемкая операция. _________________ Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог |
|
| Вернуться к началу |
|
 |
Веденин Красные глаза


Зарегистрирован: 17.05.2007 Сообщения: 2066 Откуда: Самара 11733 
|
Добавлено: Пт, 03 Окт, 2008 05:59 Заголовок сообщения: |
|
|
Ну во первых ситуации когда надо сразу делать в одном скрипты и insert и select не так уж часто встречаются, чаще надо или выбрать данные или занести их в БД (например добавление пользователем комментария это один скрипт, а получение страницы совсем другой ), конечно все зависит от структуры БД и сайта, но как минимум если не нужена например команда update, то не в коем случае не надо давать прав на неё (а уж не говорю о create, delete и alter table или создание новых пользователей).
P.S. Если в одном скрипте нужен сразу и insert и select объединить права можно, но в других скриптах лучше пользоватся отдельнымы правами.
P.P.S. Я работаю с SQL уже пять лет и ИМХО всегда лучше потерять чуть чуть производительности, чем допустить дыру в безопасности _________________ Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг |
|
| Вернуться к началу |
|
 |
Alek$ 11 1110 1000


Зарегистрирован: 24.11.2007 Сообщения: 1136 Откуда: Новосибирск 26695 
|
Добавлено: Пт, 03 Окт, 2008 06:13 Заголовок сообщения: |
|
|
Веденин
два соединения с mysql - это не чуть-чуть. Это в два раза.
А насчет минимализации прав - тут полностью согласен. _________________ Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог |
|
| Вернуться к началу |
|
 |
Веденин Красные глаза


Зарегистрирован: 17.05.2007 Сообщения: 2066 Откуда: Самара 11733 
|
Добавлено: Пт, 03 Окт, 2008 06:48 Заголовок сообщения: |
|
|
| Цитата: | | два соединения с mysql - это не чуть-чуть. Это в два раза. |
Вот результаты замеров соединения к БД MySQL,
Первое соединение: 0.0042 - 0.0053 сек
Простой Select: 0.0015 - 0.0046 сек
Второе соединение: 0.0004 сек!!!
первое соединение (причем с созданием спец. класса для работы с БД) с правами select устанавливается примерно за одно и тоже время, время select'а "прыгает" от 30% от времени соединения до 100% (выбор с группировкой и сортировкой из примерно 10 тыс записей без индекса),однако второе соединение c правами insert устанавливается в 10 раз быстрее первого. _________________ Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг |
|
| Вернуться к началу |
|
 |
Alek$ 11 1110 1000


Зарегистрирован: 24.11.2007 Сообщения: 1136 Откуда: Новосибирск 26695 
|
Добавлено: Пт, 03 Окт, 2008 07:00 Заголовок сообщения: |
|
|
Веденин
зато потребление памяти ровно в два раза
В общем, если вы пишете что-то мега важное и мега секретное, то такой подход оправдан. А в обычной гостевой книге, скажем, он излишен. _________________ Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог |
|
| Вернуться к началу |
|
 |
|