|
|
|
|
5.29, Aqueelone (?), 13:01, 17/03/2011 [^] [^^] [^^^] [ответить] [п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б┴┬ п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б┴╔п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б▄║п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б√⌠п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔я▐Б√▓я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б√═Б■─п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔я├Б∙╔я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б┬ Б■■п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б▄║я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б√═Б■─я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б┬ Б√▓]
| +/– |
>> В нормальных веб-фреймворках вроде Django или Rails об этом заботиться не надо.
>> На сегодняшний день SQL Injection это проблема прежде всего для индусов
>> PHP-шников.
> ORM и SQL Injection - это как бы ортогональные друг другу вещи.
> Наличие первого отнюдь не исключает наличие второго. В первую очередь все
> зависит от того, как и через какое место ORM общается с
> API конкретной базы. Это даже без учета того, что зачастую ORMы
> позволяют выполнение прямых SQL запросов для 'особых случаев'. И как правило
> такие случаи нет нет да найдутся.
Вообще-то, сама идеология MVC подразумевает НЕ ВОЗМОЖНОСТЬ SQL Injection -- так как ВСЯ РАБОТА С БД должна происходить на уровне модели.
Конечно, Вы в состоянии ручками "машрутизировать" запрос таким образом, что SQL Injection будет возможен, но тут нужно весьма постараться, чего явно не хватает для тех, в чью голову может прийти сия не простая идея! И, в любом случае, это будет нарушение самой концепции MVC.
| |
|
6.34, klalafuda (?), 13:54, 17/03/2011 [^] [^^] [^^^] [ответить] [п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б┴┬ п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б┴╔п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б▄║п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б√⌠п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔я▐Б√▓я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б√═Б■─п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔я├Б∙╔я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б┬ Б■■п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б▄║я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б√═Б■─я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б┬ Б√▓]
| +1 +/– |
> Вообще-то, сама идеология MVC подразумевает НЕ ВОЗМОЖНОСТЬ SQL Injection -- так как
> ВСЯ РАБОТА С БД должна происходить на уровне модели.
> Конечно, Вы в состоянии ручками "машрутизировать" запрос таким образом, что SQL Injection
> будет возможен, но тут нужно весьма постараться, чего явно не хватает
> для тех, в чью голову может прийти сия не простая идея!
> И, в любом случае, это будет нарушение самой концепции MVC.
Идеология - да, возможно. Но на практике мне может понадобиться построить хитрожопую выборку, которую модель в конкретном фреймворке может и не покрыть. Или же сделать это жутко неоптимально. Идеология идеологией, но работать тоже нужно.
Опять же, повторюсь, ORM (модель в MVC) и SQL Injection - это все-таки не зависящие друг от друга вещи. Вот есть у меня модель UserProfile и есть текстовое поле userName. Очень грубо говоря:
$x = new UserProfile;
$x->userName = $_POST['userName'];
$x->save();
Какой SQL запрос будет выполнен в конечном итоге? Как он будет выглядеть? Будет ли использоваться для передачи userName prepared statement или же будут предприняты попытки экранирования пользовательского ввода? Естественно, что как таковой паттерн MVC или ORM не дает ответа на эти вопросы. Все это уже зависит от конкретной реализации. И никто не мешает в конкретном фреймворке накосячить так, что через конечный SQL запрос я смогу исполнить свой подставляемый извне SQL код. Хотя внешне с точки зрения приложения все вроде бы как бы и через модель и пр.
| |
|
|
4.27, Aqueelone (?), 12:50, 17/03/2011 [^] [^^] [^^^] [ответить] [↑] [п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б┴┬ п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б┴╔п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б▄║п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б√⌠п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔я▐Б√▓я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б√═Б■─п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔я├Б∙╔я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б┬ Б■■п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б▄║я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б√═Б■─я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б┬ Б√▓]
| +/– |
>>Да, и отказ от prepared statements - это сильно. SQL Injection следит за тобой. Пристально. Особенно в контексте веб-сайта.
> В нормальных веб-фреймворках вроде Django или Rails об этом заботиться не надо.
> На сегодняшний день SQL Injection это проблема прежде всего для индусов
> PHP-шников.
В нормальнных PHP-CMF, например Symfony2.0, аналогично.
Если добавить, например, связку Symfony-NetBeans -- то получается вообще интересно.
В чем тут суть... есть вэб-сервер, есть sql-сервер, но для работы с IDE не плохо иметь "лайт" версию базы данных для экспериментов, причем эта "лайт-версия" желательна максимально приближенной по структуре с "продакш"-версией.
Вот именно для этих целей Drizzle -- оптимальный вариант, даже если "продакш"-версия -- что-то на уровне PG/SQL.
| |
|
|
|
|
|
3.36, anonymous (??), 17:32, 17/03/2011 [^] [^^] [^^^] [ответить] [п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б┴┬ п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б┴╔п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б▄║п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б√⌠п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔я▐Б√▓я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б√═Б■─п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔я├Б∙╔я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б┬ Б■■п©б╘п╠Б∙≤п©Б√▓п▒Б■╛Б┴╔п▒Б┬≥Б▄║я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б√═Б■─я▐Б√░п▒Б┬ Б√▒п©Б√▓п▒Б┬ Б∙░п▒Б┬ Б√▓]
| +/– |
ты это… читать умеешь, а? не, я помню, что не умеешь, вопрос риторический. я и сказал, что если это отрезать (или с SQLite привинтить, что я, например, делал) — оно даже SQLite проиграет. зато на C++.
| |
|
|
|