Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
Всем привет. Сопровождаю один сайтик, на котором имеется форма комментариев. От продвинутых пользователей пришла подсказка, что через форму комментариев можно сделать sql-injection. Но, к сожалению, конкретного примера они не привели. А у меня что-то организовать инъекцию не удается (прежде чем я буду что-то исправлять, я хочу воспроизвести проблему, чтобы быть уверенным, что проблема исчезнет). Прошу помочь. Теперь детали (оставляю только самое важное). Форма комментариев Код: html 1. 2. 3. 4. 5. Из формы данные попадают в контроллер: Код: php 1. 2. 3. 4. 5. 6. 7. 8. Запрос, который используется для сохранения комментария: Код: plsql 1. Вопросики "<?>" -- самописная обработка поступающих параметров, которая досталась мне в наследство. Параметры, переданные пользователем, объединяются в запрос (вопросики удаляются). Здесь $parQuery -- запрос с параметрами, $pars -- массив параметров. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. В этой функции подозрительно выглядят строки Код: php 1. 2. 3. но тут делается практически то же, что и в mysql_real_escape_string : Strictly speaking, MySQL requires only that backslash and the quote character used to quote the string in the query be escaped . mysql_real_escape_string() quotes the other characters to make them easier to read in log files. Так что мне пока не ясно, каким образом здесь можно сделать sql-injection. Прошу помочь понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 22:16 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
авторно тут делается практически то же, что и в mysql_real_escape_string авторCharacters encoded are “\”, “'”, “"”, NUL (ASCII 0), “\n”, “\r”, Говнокод все, я бы переделал по нормальному. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 11:55 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
И еще один момент: Код: php 1. 2. 3. Получается, что при определенном условии мы можем попасть в этот блок. В нем к запросу присоединяется текст параметра без escaping-а. Только вот мне не ясно, можем ли мы вообще попасть в этот блок: ведь числовые и строковые параметры обрабатываются в предыдущих блоках. Может, магия PHP дает возможность попадать в этот небезопасный блок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 14:30 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
pivot Код: php 1. Вот так в коде, или неправильно скопировали? А пробовали в строку в форме ' вставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 15:20 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
?, пробовали. Не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 15:34 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
?, скопировал правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 15:47 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
pivot, и у вас mysql? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 16:04 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
Почему-то считал, что для mysql в дефолтной конфигурации апострофы надо исключительно слешами экранировать, а чтобы работало с удвоением апострофов, нужна специальная настройка. Оказалось, не так. По документации удвоение апострофов должно работать всегда. Может, от каких-то старых версий информация была. Ну тогда не видно здесь sql-injection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 08:07 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
pivot, 1. интересно, что может сделать инъекция в операторе вставки данных в таблицу? Разве что вставить 2 коммента вместо одного... это раз. Если, конечно в самом низу у вас отправляется реально PDO или MySqli insert(), а не какой-нибудь общий query(). 2. Хорошо, даже если прошла инъекция на выборку данных: какова вероятность того, что выборка окажется полезной в смысле знания сторонним взломщиком названия базы, таблиц и полей... а также условия соединений полей? Тока инсайдер. Это к слову об "опытном пользователе" - ищите в подсказчиках инсайдера, если уверены, что он точно опытный. 3. а подсказка точно от "опытного", а не рекламное разводилово "давайте мы вам тут поможем"? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 08:50 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
Arhat109, имхо, но проблемы с инъекциями мне кажутся больше надуманными, чем реальными. Ещё для какого-нибудь "в контакте" - может и актуально... а для рядового сайта - слишком дорогое удовольствие удаленно копаться со взломом подбирая и определяя корректную инъекцию. по большей части - дурь это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 08:52 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
Arhat109Arhat109, имхо, но проблемы с инъекциями мне кажутся больше надуманными, чем реальными. Ещё для какого-нибудь "в контакте" - может и актуально... а для рядового сайта - слишком дорогое удовольствие удаленно копаться со взломом подбирая и определяя корректную инъекцию. по большей части - дурь это. Самому копаться не надо, для этого есть куча утилит, например sqlmap и другие. ТС может сам на локалке проверить, есть ли скуля или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 09:57 |
|
||
|
sql-injection?
|
|||
|---|---|---|---|
|
#18+
Arhat109, 1) надежнее, все-таки, чтобы всякие товарищи не могли менять наши sql-запросы. Внутри используется pear DB::connect, а затем у полученного объекта дергается метод query($sqlString). 3) Вроде бы нет. Предложений коммерческих не поступало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 11:04 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38315374&tid=1463659]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
81ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 260ms |
| total: | 455ms |

| 0 / 0 |
