The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Кардинальный метод защиты от XSS и атак по подстановке SQL-з..., opennews (??), 17-Июн-10, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


30. "bind"  +1 +/
Сообщение от Ivan1986email (?), 17-Июн-10, 09:08 
Полная чушь, если нормально реализовано, то никто просто не захочет писать не параметризованные запросы, так как они сильно упрощают код.

В PDO как раз реализовано не нормально - синтаксис многословный.
Посмотрите как реализовано тут - http://dklab.ru/lib/DbSimple/

$db->select('select * from table where fname=? {AND id IN (?a)}', 'user', array(1,2,3));

После использования такого синтаксиса как раз писать по старому будешь только под дулом пистолета.

Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

33. "bind"  +/
Сообщение от Lain_13 (?), 17-Июн-10, 09:44 
Вся прелесть параметризованных запросов как-то в миг рушится, когда параметром оказывается часть имени таблицы. Ещё хуже, когда перестраиваются фрагменты запроса и в нём появляются/исчезают вложенные подзапросы и уровни вложенности этих запросов.
Ответить | Правка | Наверх | Cообщить модератору

37. "bind"  +1 +/
Сообщение от ivan1986email (?), 17-Июн-10, 10:06 
Сходите по ссылке

'select * from ?_table' - префикс - по сути самый часто используемый вариант
'select * from ?# where ...', 'tbl' - имя
Вложенные подзапросы тоже есть, плюс в новой версии на форуме есть плейсхолдер подзапроса, можно творить такое, что я уже не знаю что туда можно добавить.

http://forum.dklab.ru/viewtopic.php?p=180253#180253

К сожалению либа была заброшена немного, но сейчас в составе фреймворка развивается
https://sourceforge.net/projects/quickfw/

Ответить | Правка | Наверх | Cообщить модератору

81. "bind"  +1 +/
Сообщение от аноним (?), 17-Июн-10, 17:24 
>Сходите по ссылке
>'select * from ?_table' - префикс - по сути самый часто используемый вариант

Дык кто бы сомневался - творчеВство пехепешников - оно вообще вштыряет не по детски.

То что такими гениальными запросами ставится на колени любая субд на любом железе уже "не проблемма кодера" да? :)


Ответить | Правка | Наверх | Cообщить модератору

43. "bind"  +/
Сообщение от filosofem (ok), 17-Июн-10, 11:17 
Что именно чушь? Если СУБД не поддерживает параметризированные запросы, то никакой API их не сделает. Как вы собираетесь писать параметризированные запросы к какой-нибудь MSSQL 2k, или как вы будете делать аудит кода на php4, переписывать полностью на php5?

ИМХО чушь это использовать на продакшне непонятные ноунэйм библиотеки. Вы проверяли, что эта DbSimple действительно делает параметризированные запросы? А вы уверены, что она так со всеми запросами будет делать? Или, что в ней нет многолетней дыры, которую просто некому заделывать, потому что никому не надо?
То что в API выглядит запросом с параметрами, к СУБД может идти обычной строкой.

Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

44. "bind"  +/
Сообщение от ivan1986email (?), 17-Июн-10, 11:25 
Я ее дописывал, а не только проверял.
Что может - использует встроенные параметризации, что нет - раскрывает и сама экранирует.
В случае, если параметры не поддерживаются, то конечно идет обычной экранируемой строкой.
Почему-то в PDO нету подстановки в качестве параметров массивов, идентификаторов, и прочих полезных вещей.
Ответить | Правка | Наверх | Cообщить модератору

46. "bind"  +/
Сообщение от Аноним (-), 17-Июн-10, 11:33 
>Я ее дописывал, а не только проверял.
>Что может - использует встроенные параметризации, что нет - раскрывает и сама
>экранирует.
>В случае, если параметры не поддерживаются, то конечно идет обычной экранируемой строкой.
>
>Почему-то в PDO нету подстановки в качестве параметров массивов, идентификаторов, и прочих
>полезных вещей.

А вам не кажется, что использование "черного ящика", который то экранирует то параметоризирует, распускает разработчика, который начинает излишне доверять сторонней библиотеки, но по сути курит на бочке с порохом ? Я бы не стал доверять внешнему универсальному коду экранирования, например, дыры с недоэкранированием при передачи битого unicode классический пример, что и на старуху бывает проруха.

Ответить | Правка | Наверх | Cообщить модератору

48. "bind"  +/
Сообщение от ivan1986email (?), 17-Июн-10, 11:44 
А вам не кажется, что придумывание своего велосипеда, который хоть и известен до каждого винтика, но как всегда получится с квадратными колесами (доказано огромным количеством примером - столько CMS/форумов/фреймворков приделают в качестве доступа к базе такую фигню, что за голову берешься), взяли бы хоть PDO, и то лучше было бы.

Экранируется кстати стандартными функциями - mysql_real_escape в случае mysql, pdo::quote в случае PDO, и так далее.

Ответить | Правка | Наверх | Cообщить модератору

50. "bind"  +/
Сообщение от Аноним (-), 17-Июн-10, 11:49 
>Экранируется кстати стандартными функциями - mysql_real_escape в случае mysql,

Вот видите, вы сами подтвердили мою гипотезу о том, что не стоит доверять внешним универсальным решениям. Я как раз упоминал о хитрых методах обхода экранирование через многобайтовые кодировки, о которых разработчики разных функций проверки не догадывались.

http://secunia.com/advisories/20365/
"The vulnerability is caused due to an error within the server when parsing a query string that is escaped with the "mysql_real_escape_string()" function. This can potentially be exploited in an environment that uses multi-byte character encoding to bypass SQL injection escaping."

Ответить | Правка | Наверх | Cообщить модератору

52. "bind"  +1 +/
Сообщение от ivan1986email (?), 17-Июн-10, 11:59 
Вы только что доказали, что вы "Аналитик с лора"

Тоесть вы предлагаете экранировать самому - в результате допустить еще неизвестно какие баги, но жутко бояться уже пофикшенного давным давно бага.

SQL injection vulnerability in MySQL 4.1.x before 4.1.20 and 5.0.x before 5.0.22

Аналитик, такой аналитик.

Ответить | Правка | Наверх | Cообщить модератору

55. "bind"  +1 +/
Сообщение от Аноним (-), 17-Июн-10, 12:17 
Я предлагаю не испытывать излишнего доверия к "черным ящикам", так как в этом лишнем звене могут быть дыры. Если пользователи "mysql_real_escape_string()" увидят появление узявимости, то пользователи вашего черного ящика могут догадаться о ней только по косвенным признакам или после аудита кода. И не факт, что дыру в "черном ящике" автор исправит на следующий день, она может годами висеть незамеченной.

PS. Вы скатились до личных оскорблений, не имея аргументов для возражения. Посему считаю дискуссию законченной.

Ответить | Правка | Наверх | Cообщить модератору

57. "bind"  +/
Сообщение от ivan1986email (?), 17-Июн-10, 12:34 
Понятно, позиция называется - пишем на ассемблере все.

Вы сейчас несете чушь - использование стандартных функций там, где можно - лучше, чем писать свои, которые реализуют ту-же самую функциональность.
Если исправят баг в основной, то баг исправится и тут, а вот если бы был сделан велосипед, который предложили вы, то он как раз бы и висел бы годами не найденный.

Излишнего доверия к "черным ящикам" никто не испытывает, более того код тут открыт, и даже пару багов было найдено и исправлено.

Стандартный функционал mysql_* функций совершенно не подходит, поэтому и была изначально написана эта библиотека, потом появился php5 с PDO, функциональность которого была лучше, но тоже не совсем устраивала, но для него был написан адаптер, который использует эту функциональность.

Вот если PDO или что-то еще разовьется до того уровня, чтобы предоставить аналогичную функциональность, то тогда эта библиотека будет не нужна, вот только когда это будет, и будет ли вообще :)

Оскорблений не было, это констатация факта :)

Ответить | Правка | Наверх | Cообщить модератору

63. "bind"  +/
Сообщение от Аноним (-), 17-Июн-10, 13:11 
>Вы сейчас несете чушь - использование стандартных функций там, где можно -
>лучше, чем писать свои, которые реализуют ту-же самую функциональность.

Стоп, это же именно вы предлагайте использовать левую нестандартную библиотеку вместо стандартных функций экранирования PHP.

>Если исправят баг в основной, то баг исправится и тут,

Если автор левой библиотеки, которой пользуются 10 человек, не забросит свой проект. Посмотрите последние обновления безопасности в RHEL, там поправили дыры годичной давности,
как раз в библиотеках, подобных вашей.

>Стандартный функционал mysql_* функций совершенно не подходит, поэтому и была изначально написана
>эта библиотека, потом появился php5 с PDO, функциональность которого была лучше,

Вот и надо было продвигать идеи в mainstream, а не создавать левый проект, использование которого целесообразно только для людей, принимающих участие в его разработке.

Ответить | Правка | Наверх | Cообщить модератору

65. "bind"  +/
Сообщение от ivan1986email (?), 17-Июн-10, 13:22 
Нет, я как раз предлагаю использовать стандартные функции - в случае mysql - mysql_real_escape_string, в случае PDO - PDO::escape, а вы тут ругаетесь на то что раз она бажная, то нужно написать свою обертку.

>Вот и надо было продвигать идеи в mainstream, а не создавать левый проект

Вы пробовали что-то продвинуть в mainstream? У меня есть опыт - и патчи psi+ в psi очень медленно, и в taglib довольно долго патч в пакет добавляется.

А тут вы хотите изменить идеологию работы PDO - подумайте, сколько геморроя это доставит.
Насчет десятка человек - dklab.ru довольно известный сайт среди русских php разработчиков, довольно популярная библиотека.

Ответить | Правка | Наверх | Cообщить модератору

70. "bind"  +/
Сообщение от Аноним (-), 17-Июн-10, 14:15 
>Вы пробовали что-то продвинуть в mainstream?

Я пробовал принимать в mainstream :-)


Ответить | Правка | К родителю #65 | Наверх | Cообщить модератору

87. "bind"  +/
Сообщение от Sw00p aka Jeromemail (?), 17-Июн-10, 20:48 
Release Date        2006-06-02
Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру