URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 75865
[ Назад ]

Исходное сообщение
"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"

Отправлено opennews , 28-Мрт-11 10:49 
Поступило сообщение (http://seclists.org/fulldisclosure/2011/Mar/309) об успешном взломе сайтов MySQL.com и Sun.com, а также некоторых связанных с ними субпроектов. Примечательно, что проникновение было совершено через простейшую  уязвимость, позволившую осуществить подстановку SQL-кода (http://ru.wikipedia.org/wiki/%D0%92%D0%B...из-за некорректной проверки одного из параметров скрипта, используемого для предоставления клиентских сервисов. По доступным в настоящий момент данным, взлом ограничился только доступом к СУБД. Пока нет никаких сведений, указывающих на то, что атакующим удалось получить доступ к серверу или web-движку.


Атакующие уже опубликовали в открытом доступе список всех обслуживаемых на взломанном сервере баз данных и перечень некоторых таблиц. В одной из таблиц содержался список пользователей и администраторов СУБД. Большинство паролей для пользователей в данном списке было представлено в виде ...

URL: http://techie-buzz.com/tech-news/mysql-com-database-compromi...
Новость: http://www.opennet.me/opennews/art.shtml?num=30043


Содержание

Сообщения в этом обсуждении
"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 10:49 
не, народ, вы конечно комменты режете, но реально из-за некорректной проверки какого именно скрипта - пыхпых, jsp, что?

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


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено uZver , 28-Мрт-11 10:53 
JSP не является скриптом. Плюс обычно (если прочитали как програть на java) JSP ходят в БД через prepareStatement или JPA. и то и другое работают без конкатенации запроса, а значит SQL-inject им не светит.

PS только архитектор мешает бывшим PHP-кодерам писать так же на JSP.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 11:20 
бросьте, писать быдло-код не может помешать любой язык, будь то php или java.
и не нужно такого снобизма. ибо ынтырпрайзный код я тоже насмотрелся.
хотите скажу какой пароль у ключа, подписывающего jar от oebs? :D
зыж
>JSP (JavaServer Pages) — технология, позволяющая веб-разработчикам легко создавать содержимое, которое имеет как статические, так и динамические компоненты. По сути, страница JSP является текстовым документом, который содержит текст двух типов

можете НЕ называть это скриптом, ради бога, я не возражаю. но если чё, то пыхпых-скрипты тоже можно скомпилить.
хотя для простоты общения я всё равно назову их скриптами.
ззыж
>Плюс обычно (если прочитали как програть на java) JSP ходят в БД через prepareStatement

что не мешает генерить строку запроса динамически, не так ли? :D


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Аноним , 28-Мрт-11 13:28 
> бросьте, писать быдло-код не может помешать любой язык, будь то php или java.

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


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 13:33 
>Вот только быдлокодеры не специально пишут код с инъекциями - у них это получается без всякого труда, и, соответственно, иногда их достаточно пересадить на более вменяемый язык или платформу.

одним словом - бред.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Dmitry , 28-Мрт-11 13:40 
Изкаробочная альтернатива в PHP - PDO.

В Java кроме PreparedStatement есть еще и Statement, который при неумелом использовании может приводить к SQL Injection.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено uZver , 28-Мрт-11 17:59 
> Изкаробочная альтернатива в PHP - PDO.
> В Java кроме PreparedStatement есть еще и Statement, который при неумелом использовании
> может приводить к SQL Injection.

Для любителей пристрелить себя из каропки есть JPA - пользуйте его для SQL injection.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 28-Мрт-11 23:10 
а вы хоть понимаете ваще для чего нужны препарации запроса ? да правильно чтобы 10 раз не парсить 10 запросов а подставлять значения (хорош для инсертов и апдейтов). имхо для обычного селекта - накладные расходы

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено klalafuda , 28-Мрт-11 14:37 
> что не мешает генерить строку запроса динамически, не так ли? :D

Если человек так сильно хочет прострелить себе ногу - ничто не сможет его остановить.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 14:49 
именно.

зыж
я понимаю, сей инцидент есть крЮтой повод провести маркетинговые пляски и пропиарить то или иное решение (прадон, платформу!!! и никак иначе :D).
а реальность такова - слабые знания, слабый аудит кода и банальная халатность.
то что маркетологи (уже после внедрения ПЛАТФОРМЫ) называют скромно - человеческий фактор, что же вы хотите?.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено User294 , 28-Мрт-11 17:55 
> Если человек так сильно хочет прострелить себе ногу - ничто не сможет
> его остановить.

Быдлокодер не хочет стрелять именно себе в ногу осознанно. Он просто пишет код, не думая о том что кто-то может мыслить чуть креативнее чем сам быдлокодер с его полутора извилинами и поэтому внешние данные могут содержать очень странные значения :).


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено uZver , 28-Мрт-11 17:58 
>> Плюс обычно (если прочитали как програть на java) JSP ходят в БД через prepareStatement
> что не мешает генерить строку запроса динамически, не так ли? :D

Это как С++ мне выдал, что в java можно получить утечку памяти - создать статический указатель на список и бесконечно его заполнять =)))


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено AlexAT , 28-Мрт-11 13:37 
Вот так обрезают доступный функционал - а потом удивляются, почему их "ентерпрайзное" поделие ворочается в 100500 раз медленнее нормальными руками написанного кода.

А быдлокодеров надо просто к коду не пускать, и все будет хорошо.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено uZver , 28-Мрт-11 18:02 
Как раз java и подходит для быдло-кодеров. Один грамотный надсмотрщик-архитектор и 10-к кодеров пишут работающий софт.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено rihad , 29-Мрт-11 10:41 
> JSP не является скриптом.

Скриптом называется код, который на лету интерпретируется в машинный код целевого железа (неважно, через промежуточный байткод для скорости или без него), и *.jsp файлы на x86 или amd64 именно это из себя и представляют.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено crypt , 28-Мрт-11 13:50 
новость закономерная. лично я уже давно успел подивиться, что они используют fedora и прочее барахло.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 14:52 
вот из-за таких скороспелых аналитегов такие сабжы в основном и случаются кстати.
зыж
странно что новость не назвали "взлом федоры с селинухом".
такое название имело такое же право на существование как и текущее.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено crypt , 28-Мрт-11 16:08 
Дело не в том, что "Федору сломали", а в том, что люди, которые ставят ее на сервера и в других местах налажают. Народная мудрость подтвердилась.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 16:34 
сори, но бред.
тем более что ставят федору одни, а скрипты на пыхпыхе уж точно пишут совсем другие.
сомневаюсь что этот сиквел-инжекшн сам собой бы затянулся, если бы стоял к примеру на соляре. ну а винду бы сломали ещё до обнаружения этой дырки.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено crypt , 28-Мрт-11 17:11 
В крупных компаниях есть должности, на которых утверждают весь стек технологий и одобряют конкретные решения. Это не так что программер сказал: PHP! Админ: Fedora! Они пожали друг другу руки и стало так.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено crypt , 28-Мрт-11 17:15 
То есть кто-то а) нанял админа, который поставил Fedora и не заморачивался обновлением и б) программера, который написал плохой код.
Ну и еще мне странно, почему они правда родной Solaris не поставили. Это мягко говоря странно.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 17:29 
ну и кто утверждает этот стэк? :D
ведь вы так и не сказали.
а реально утверждает архитект, которому подчиняется тот программер и еще толпа, и начальник управления тех поддержки, которому подчиняется тот админ и еще толпа.
и это кончно кардинально меняет дело. :D

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


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 17:31 
а да! забыл еще один аргумент!
надо было делать не на быдло-мускуле, а на оракле или дб2.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено uZver , 28-Мрт-11 18:08 
> а да! забыл еще один аргумент!
> надо было делать не на быдло-мускуле, а на оракле или дб2.

нет никакой разницы - взлом прошел через PHP и его базовые либы. Для java либы сделаны более качественно + разнесение на слои принуждает к иному подходу.

Думаю, что С/С++ либы для коннекта к СУБД тоже более грамотные, чем PHP. Хотя утверждать не буду ;)))


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 19:08 
>нет никакой разницы - взлом прошел через PHP и его базовые либы.

вы уверены что такое sql-injection? или думаете на жабе нельзя написать прогу так, что запрос - SELECT fieldlist FROM table WHERE field = '$EMAIL';
превратиться в - SELECT fieldlist FROM table WHERE field = '$EMAIL' AND email IS NULL;
рекомендую для ознакомления чтобы херню не писать - http://www.owasp.org/index.php/Preventing_SQL_Injection_in_Java

зыж
базовые библиотеки свою работу выполнили - запрос был отработан полностью и без ошибок! :D


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 19:12 
вот пример на жабе:

conn = pool.getConnection( );
String sql = "select * from user where username='" + username +"' and password='" + password + "'";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
loggedIn = true;
    out.println("Successfully logged in");
} else {
    out.println("Username and/or password not recognized");
}

быдло жаба? и её базовые либы? не? :D


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено xwrs , 28-Мрт-11 19:33 
Так пишут только моральные уроды и самоубийцы.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено klalafuda , 28-Мрт-11 19:35 
> Так пишут только моральные уроды и самоубийцы.

Но написать указанное выше можно на любом языка программирования.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 28-Мрт-11 23:21 
> Так пишут только моральные уроды и самоубийцы.

немного не соглашусь

что повашему он должен был создать кучу наследуемых обёрток классов?


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено uZver , 29-Мрт-11 10:43 
использовать prepareStatement и передавать параметры как параметры. Или использовать JPA, если прямой JDBC слишком сложен :)

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено xwrs , 29-Мрт-11 10:58 
Нет. Один раз изучить JPA и писать как человек

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 29-Мрт-11 13:04 
наивный ?

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено uZver , 28-Мрт-11 20:22 
> или думаете на жабе нельзя написать прогу так, что запрос - SELECT fieldlist FROM table WHERE field = '$EMAIL';
> превратиться в - SELECT fieldlist FROM table WHERE field = '$EMAIL' AND email IS NULL;

да, вы правы. PHP кодеров не стоит брать в качестве разработчика.

попробуйте провернуть то же самое на JPA ;)

Еще стоит посмотреть как происходить работа UI и системы - данные передаются типизированными. И такими же уходят в БД.

Хотя вариант создать статик и набить объектами до окончания памяти убьет любой язык.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 21:07 
>да, вы правы. PHP кодеров не стоит брать в качестве разработчика.

я этого не говорил. :D
а вот то, что жабаписцы такие же и в тех же пропорциях - это да. подтверждаю. :D


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 28-Мрт-11 23:14 
>> или думаете на жабе нельзя написать прогу так, что запрос - SELECT fieldlist FROM table WHERE field = '$EMAIL';
>> превратиться в - SELECT fieldlist FROM table WHERE field = '$EMAIL' AND email IS NULL;
> да, вы правы. PHP кодеров не стоит брать в качестве разработчика.
> попробуйте провернуть то же самое на JPA ;)
> Еще стоит посмотреть как происходить работа UI и системы - данные передаются
> типизированными. И такими же уходят в БД.
> Хотя вариант создать статик и набить объектами до окончания памяти убьет любой
> язык.

пхп быдло-кодеры порой намного лучше пишут чем теже быдло-кодеры на яве (почему ? - адназначна - пэхэпэ легче)


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено uZver , 29-Мрт-11 10:51 
ага SQL-inject сделать на PHP однозначно легче.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 29-Мрт-11 13:06 
> ага SQL-inject сделать на PHP однозначно легче.

и намного легче написать безопасное приложение
нежеле в яве городить огород


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено xwrs , 29-Мрт-11 11:10 
>>> или думаете на жабе нельзя написать прогу так, что запрос - SELECT fieldlist FROM table WHERE field = '$EMAIL';
>>> превратиться в - SELECT fieldlist FROM table WHERE field = '$EMAIL' AND email IS NULL;
>> да, вы правы. PHP кодеров не стоит брать в качестве разработчика.
>> попробуйте провернуть то же самое на JPA ;)
>> Еще стоит посмотреть как происходить работа UI и системы - данные передаются
>> типизированными. И такими же уходят в БД.
>> Хотя вариант создать статик и набить объектами до окончания памяти убьет любой
>> язык.
> пхп быдло-кодеры порой намного лучше пишут чем теже быдло-кодеры на яве (почему
> ? - адназначна - пэхэпэ легче)

да. на пхп легче писать большие обьемы кода для маленьких программ. Для сравнения: на java писать сложнее и меньше для аналогичных программ. Каждый выбирает себе язык по способностям: кто хорошо набирает тексты а кто и программирует хорошо (да-да есть и такие!:))


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 29-Мрт-11 13:07 
>[оверквотинг удален]
>>> Еще стоит посмотреть как происходить работа UI и системы - данные передаются
>>> типизированными. И такими же уходят в БД.
>>> Хотя вариант создать статик и набить объектами до окончания памяти убьет любой
>>> язык.
>> пхп быдло-кодеры порой намного лучше пишут чем теже быдло-кодеры на яве (почему
>> ? - адназначна - пэхэпэ легче)
> да. на пхп легче писать большие обьемы кода для маленьких программ. Для
> сравнения: на java писать сложнее и меньше для аналогичных программ. Каждый
> выбирает себе язык по способностям: кто хорошо набирает тексты а кто
> и программирует хорошо (да-да есть и такие!:))

хех - сравним ?


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено потому , 29-Мрт-11 14:39 
>Каждый выбирает себе язык по способностям

Это просто приступ снобизма. и СМВ.
Или банальный троллинг.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 28-Мрт-11 23:19 
>>разнесение на слои принуждает к иному подходу

на какие слои ?

просто в препарациях проверяются типы данных (что есть в пэхэпэ и той же в яве)

дело не в либах, а в кривых руках даже не быдло-кодеров, а быдлокодеров sql синтаксиса и реализация протокола вотъ

пс: если запретить коментарии в sql запросах то ни одна фактически инъекция не пройдёт (при том что параметр будет обрамлён кавычками)

чтобы программирование было безопасным - надо ужесточать правила программирования (тады и быдлокодеров меньше будет)


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено klalafuda , 29-Мрт-11 00:23 
> просто в препарациях проверяются типы данных (что есть в пэхэпэ и той же в яве)

Эээ.. Простите, какие типы данных? Где проверяются? Кем? И причем тут PHP, Java или кто-либо ещё? И чем работа с ps на языке A принципиально отличается от оной на языке Б :-?

> дело не в либах, а в кривых руках даже не быдло-кодеров, а быдлокодеров sql синтаксиса и реализация протокола вотъ

Какого именно протокола? Удаленного доступа к базе? Сколько баз - столько протоколов. Какого то одного или всех скопом?


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 29-Мрт-11 13:08 
>> просто в препарациях проверяются типы данных (что есть в пэхэпэ и той же в яве)
> Эээ.. Простите, какие типы данных? Где проверяются? Кем? И причем тут PHP,
> Java или кто-либо ещё? И чем работа с ps на языке
> A принципиально отличается от оной на языке Б :-?
>> дело не в либах, а в кривых руках даже не быдло-кодеров, а быдлокодеров sql синтаксиса и реализация протокола вотъ
> Какого именно протокола? Удаленного доступа к базе? Сколько баз - столько протоколов.
> Какого то одного или всех скопом?
>>Эээ.. Простите, какие типы данных? Где проверяются? Кем? И причем тут PHP, Java или кто-либо ещё?

вы не в теме ?


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено klalafuda , 29-Мрт-11 13:09 
> вы не в теме ?

Судя по всему нет, не в теме. Разъясните?


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 29-Мрт-11 13:21 
>> вы не в теме ?
> Судя по всему нет, не в теме. Разъясните?

учите матчасть - удачи


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено потому , 29-Мрт-11 14:42 
А на пальцах? А с пруфлинками?
Может вы тоже не в теме?

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 29-Мрт-11 15:38 
> А на пальцах? А с пруфлинками?
> Может вы тоже не в теме?

смотрите каменты ниже там пруфы


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 29-Мрт-11 22:18 
нету там.
приводи тут. или просто врёшь.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 30-Мрт-11 00:49 
вот комент http://www.opennet.me/opennews/art.shtml?num=30043#44
а вот пруфы

http://download.oracle.com/javase/tutorial/jdbc/basics/prepa...
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Pr...
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Pr...


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 30-Мрт-11 19:03 
ну и какие там слои?
очередное враньё.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено uZver , 29-Мрт-11 10:50 
>>>разнесение на слои принуждает к иному подходу
> на какие слои ?

DAO, DTO, Services и т.п.

> просто в препарациях проверяются типы данных (что есть в пэхэпэ и той
> же в яве)

Вы не работали в javaEE проектах, потому и не въехали. В Java типы данных не проверяюся!!! совсем. В java данные в код приходят типизированными. За типизацию отвечает сами подсистема JavaEE.

> дело не в либах, а в кривых руках даже не быдло-кодеров, а
> быдлокодеров sql синтаксиса и реализация протокола вотъ

SQL очень даже хороший синтаксис.

> пс: если запретить коментарии в sql запросах то ни одна фактически инъекция
> не пройдёт (при том что параметр будет обрамлён кавычками)

А как это связано? харе думать по PHP и собирать SQL строки. разделение запросов и переменных сделано давно, только далеко не все достаточно образованы чтобы этим пользоваться.

> чтобы программирование было безопасным - надо ужесточать правила программирования (тады
> и быдлокодеров меньше будет)

Java вполне себе жесткие правила вводит. Только некоторые аморальные анонимы вместо prepareStatement так и наровят сканкотенировать строку и отправить в БД.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено klalafuda , 29-Мрт-11 12:38 
> Java вполне себе жесткие правила вводит. Только некоторые аморальные анонимы вместо prepareStatement так и наровят сканкотенировать строку и отправить в БД.

$ids = array();
.....
$sql = 'DELETE FROM SomeTable WHERE record_id IN ('.implode(',', $ids).')';

PS тут не помогут. By design. При том что это существенно эффективнее, чем N отдельных операций удаления. Вопрос лишь в том, что как только девелупер встал на этот скользкий путь - конструирование SQL запросов руками - он должен четко отдавать себе отчет в том, где он находится, что он делает и как он это делает.


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Alex , 29-Мрт-11 16:35 
>$ids = array();
>.....
>$sql = 'DELETE FROM SomeTable WHERE record_id IN ('.implode(',', $ids).')';

Это делается так с помощью PDO:

$sql = 'DELETE FROM SomeTable WHERE record_id IN ('.rtrim(str_repeat("?,", count($ids)),',').')';
$sth = $dbh->prepare($sql);
$sth->execute($ids);

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


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Crazy Alex , 30-Мрт-11 20:22 
Вот, собственно, пока такого не будет во встроенных функциях, быдлокодеры этим пользоваться не будут.

Но SQL - это идиотизм сам по себе. Просто поразительно, как "близкий к естественному" язык для менеджеров" прижился в программировании. С упорядоченностью элементов запроса (к примеру, нельзя перемешать FROM и WHERE), с необходимостью пихать бестолковые AND и OR и тому подобным. Хотя для программизма можно было бы сделать что-нибудь гораздо более удобное для генерации, как минимум с допустимостью любого порядка элементов запроса и конкатенацией повторяющихся элементов (т.е. если пишем подряд два FROM, к примеру, то их содержимое объединяется), с возможностью подстановки любых при выполнении, а не только значений параметров (например, чтобы имя таблицы подставлялось или порядок сортировки). Да, в отдельных случаях такое не будет препариться - но обычно оно и не надо. То есть должны быть две разные функции - "указать шаблон запроса" со смыслом "это каркас, который не должен меняться, а должны только подставляться указанные элементы" и "подготовить запрос" со смыслом "выполнить сто раз с разными аргументами".

А сейчас любимый аргумент борцом с PREPARE - его ограниченность. Ни JOIN динамически не сделаешь, ни списко полей не задашь...


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 29-Мрт-11 13:20 
>>DAO, DTO, Services и т.п.

и кучу ненужных обёрток (быстрои маоенький код как сказал выше один гражданин) ))) спасибо поржал

>>Вы не работали в javaEE проектах, потому и не въехали. В Java типы данных не проверяюся!!! совсем. В java данные в код приходят типизированными. За типизацию отвечает сами подсистема JavaEE.

ага )))) приходят уже типизированные (и правильно заметили - приводят к типу который бесмысленен) ибо для mysql-а выбирать запрос по колонке int в кавычка или без них совершенно безразлично (можем писать так WHERE id=1, можем и так WHERE id='1')

и вся беда из-за коментариев в sql которые позволяют коментить хвост запроса (реального)

всё это криворукая реаоизация mysql
на сколько я помню в mssql написать так WHERE id='1' для int поля является ошибкой


>>SQL очень даже хороший синтаксис.

смотрим выше

>>только далеко не все достаточно образованы чтобы этим пользоваться.

и далеко не все поняли для чего ваще сделали препарацию запроса

вот вам пруфы и посмотрите для чего ваще создавали препарацию

http://download.oracle.com/javase/tutorial/jdbc/basics/prepa...
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Pr...
http://www.jdbc-tutorial.com/jdbc-prepared-statements.htm

не для селекта (который делается один раз во всей программе) ведь


>>Java вполне себе жесткие правила вводит. Только некоторые аморальные анонимы вместо prepareStatement так и наровят сканкотенировать строку и отправить в БД.

знаете мне один раз мой ментор сказал - и "мобильником гвозди забивать можно"


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено Sw00p aka Jerom , 29-Мрт-11 13:42 
>>Только некоторые аморальные анонимы вместо prepareStatement так и наровят сканкотенировать строку и отправить в БД.

а почему бы и нет ? зачем городить всякую фигню если можно одним разом попроправит sql синтаксис (и ваще как я вижу его и нехотят править - и вот им (mysql.com) хороший урок - позор бля) сделать более жестким и безопасным

нахрена создавать функцию экранирования если экранирование можно реализовать в функции выборки - одним словом - ГАВНо ЭТОТ ОПЕНСОУРС (не радуйтесь - проприетарзина ни чем не лучше)


"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено crypt , 28-Мрт-11 18:49 
Заметь, из нас двоих, аноним, _для_тебя_ стал новостью взлом сервера.

"Зафиксирован взлом СУБД, обслуживающей сайт MySQL.com"
Отправлено ананим , 28-Мрт-11 19:00 
заметь, ломают сайты и на дотнетах, и на жабе.
и для меня это давно не новость ни для одного, ни для другого, ни для третьего.

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