MVC, загрузка POST data в объекты модели
2. Почему бы просто не подписывать электронной подписью список key-ев для post data? Т.е. при отправке на клиента подписываем список key-ев, а при последующем получении post-а проверяем, что этот список остался неизменным. Это покроет 99% реальных сценариев с post запросами.ты хоть примерно себе представляешь сколько миллисекунд добавит в каждый запрос электронная подпись? это из пушки по воробьям
Может простой hmac имеется в виду?
и чего с ним делать, с простым hmac? хранить для каждой отданной формы её hmac, затем сверять то что пришло POST с тем, что сохранили? тоже вариант в принципе, но какой-то всё-таки индусский подход, на мой взгляд, не?
1. Интересно, как этот вопрос решается в MVC Web фрайворках на других платформах?В нормальных веб-фрэймворках такой проблемы нет.
так если ты знаешь список "хороших" имен при отправке, то почему ты поэтому списку ты не можешь проверить при получении?
ты хоть примерно себе представляешь сколько миллисекунд добавит в каждый запрос электронная подпись? это из пушки по воробьямне, не представляю, поэтому и спрашиваю . Неужели нет какого-нибудь алгоритма, который без траты миллисекунд подпишет небольшое сообщение в несколько десятков буквк?
хранить для каждой отданной формы её hmac, затем сверять то что пришло POST с тем, что сохранили?Не, как раз хранить на сервере ничего не хочется. Хочется оставаться state less. Если хранить, то и подписывать не надо, можно просто сам список key-ев хранить. Суть подписи в том, что она ездит вместе с формой.
так если ты знаешь список "хороших" имен при отправке, то почему ты поэтому списку ты не можешь проверить при получении?Ха, в том то и проблема, как это закодировать? WebForms-ы это делали, а MVC out of the box не может. Суть в том, что должна быть некоторая часть source code-а, которая отрабатывает и при рендеренге ответа и при обработке последующего POST-а. В WebForms таким кодом был markup с контролами, а в MVC рендеринг и обработку POST-а разнесли полностью, и поэтому получили обсуждаемую проблему.
То есть удобство кодирования получили, а в секюрити потеряли. Вот и предлагается решить проблему секюрити через шифрование. А решать проблему за счет труда девелопера это не гуманно .
ты хоть примерно себе представляешь сколько миллисекунд добавит в каждый запрос электронная подпись?Я, кстати, не представляю, но попробую угадать. Одну?
В нормальных веб-фрэймворках такой проблемы нет.Проблема общего характера, дело не в реализации, а в самом подходе MVC. Как я написал в ответе на предыдущий пост:
Т.е. имеется всего три альтернативы:
Суть в том, что должна быть некоторая часть source code-а, которая отрабатывает и при рендеренге ответа и при обработке последующего POST-а.
1. некоторый общий код, использующийся и на рендеренге и при обработке соответствующего POST-а,
2. шифрование/подпись,
2.2. хранение key-ев на сервере,
3. тупой труд девелопера.
Вот интересно что выбирают в MVC-фраймворках на других платформах?
Вот интересно что выбирают в MVC-фраймворках на других платформах?Все вместе.
По модели строится формочка, в которую можно включать не все поля, в формочку добавляется защита от csrf.
В итоге имеем лишний код рендеринга и валидации и <тупой> (читай "не enterprise-way") труд девелопера.
Все вместе.т.е. там всё еще хуже?
т.е. там всё еще хуже?Ну хз, во фреймворках для быдлокодинга может и лучше, пусть они и не enterprise, а я-то про нормальные говорю.
По модели строится формочка...да и у нас есть такие извращенцы http://en.wikipedia.org/wiki/Naked_Objects_MVC
Но
These two patterns have been considered as antithetical. However, Trygve Reenskaug (the inventor of the MVC pattern) has made..
как бы там этот чувак не словоблудил, разные эти паттерны по сути.
Я, кстати, не представляю, но попробую угадать. Одну?SHA-1 + RSA с 1024-битным ключом, схема PKCS 1.5: в среднем порядка 15 миллисекунд на каждую операцию. Это на сервере годовалой свежести (середина 2009) с двумя 4-ядерными Intel Xeon на борту, под нагрузкой, в много потоков.
Naked-извращенцы есть только у вас (точнее, те кто недоделанность своего фрэймворка считает особым видом извращения а ты спрашивал про MVC-фрэймворки, я тебе про них и ответил:
Очевидно что по модели можно достаточно стандартным образом генерировать форму + печатанием нескольких букв можно из этой формы некоторые поля исключить. Так что naked object это доведенный до примитивизма (чтобы не писать <тупой> код) MVC.
SHA-1 + RSA с 1024-битным ключом, схема PKCS 1.5: в среднем порядка 15 миллисекунд на каждую операцию. Это на сервере годовалой свежести (середина 2009) с двумя 4-ядерными Intel Xeon на борту, под нагрузкой, в много потоков.Слишком много умных слов, они меня только расстраивают.
Я правильно понимаю что этот способ гораздо проще и быстрее работает?
Слишком много умных слов, они меня только расстраивают.Что-то я недодумал, еще посоображаю
Я правильно понимаю что этот способ гораздо проще и быстрее работает?
Я правильно понимаю что этот способ гораздо проще и быстрее работает?да, и гораздо проще, и гораздо быстрее, т.к. это и не подпись
Informally, we call this process "signing the request," and we call the output of the HMAC algorithm the "signature" because it simulates the security properties of a real signature.
да, и гораздо проще, и гораздо быстрее, т.к. это и не подписьЭто я знаю.
Так вот что я хотел сказать: для задачи в первом посте треда настоящая подпись и не нужна.
но по-моему и такая, как описана по ссылке, для данной задачи тоже не нужна
извращение это по-моему - таким способом подменять нормальную валидацию
извращение это по-моему - таким способом подменять нормальную валидациюпочему?
Очевидно что по модели можно достаточно стандартным образом генерировать формунифига это не очевидно, по одной простой причине, что нет четкого общепринятого понятия "модель". Например, в ASP MVC прямолинейно заявляют
What is an MVC model?
An MVC model contains all of your application logic that is not contained in a view or a controller. ...
http://www.asp.net/mvc/tutorials/understanding-models-views-...
т.е. просто и незатейливо, модель это все то что не контроллер и не вью.
Очевидность генерации формочки по модели будет иметь место, если вы расскажите каким source code-ом вы делаете модель. Как, каким кодом, вы закладываете инфу о том как выглядит формочка? Практически ведь абсолютно пофиг как называть куски кода модель или виью или еще как.
Да, и у меня есть подозрение, что в вашей Java это какие-нибудь XML-ки. И нам такого не надо. И даже хорошо, что проблема у нас есть, а решения нет. Уж лучше отсутствие решения вовсе, чем решение на XML-ках, поскольку если бы оно было, то понабежала бы всякая словоблудистая пидоросня, восхваляющая это энтерпрайз “решение”.
нифига это не очевидно, по одной простой причине, что нет четкого общепринятого понятия "модель". Например, в ASP MVC прямолинейно заявляютВшмышле в вашем недофрэймворке нет такого понятия? Вот тут даже на русском написано.
Очевидность генерации формочки по модели будет иметь место, если вы расскажите каким source code-ом вы делаете модель. Как, каким кодом, вы закладываете инфу о том как выглядит формочка? Практически ведь абсолютно пофиг как называть куски кода модель или виью или еще как.
Ну как бы MVC не зря называется MVC а не ABC — потому как за этими названиями есть некий смысл
Да, и у меня есть подозрение, что в вашей Java это какие-нибудь XML-ки. И нам такого не надо. И даже хорошо, что проблема у нас есть, а решения нет. Уж лучше отсутствие решения вовсе, чем решение на XML-ках, поскольку если бы оно было, то понабежала бы всякая словоблудистая пидоросня, восхваляющая это энтерпрайз “решение”.
Какие-то эротические фантазии. Не знаю что там в Жаве, а уж каким боком сюда XML относится боюсь даже представить.
ахуенно, это ж насколько надо не уважать собеседника, чтобы на 20 сообщении давать ссылку MVC из вики
Оставить комментарий
6yrop
Вот тут описаны Over\Under-Posting Problem:Решение, которое предлагает ASP.NET MVC, конечно, полное говно... неудобно писать и майтейнить такие white списки и view-specific models:
1. Интересно, как этот вопрос решается в MVC Web фрайворках на других платформах?
2. Почему бы просто не подписывать электронной подписью список key-ев для post data? Т.е. при отправке на клиента подписываем список key-ев, а при последующем получении post-а проверяем, что этот список остался неизменным. Это покроет 99% реальных сценариев с post запросами.
3. Да, кстати, в всеми обсираемых Web Forms-ах с эти было все тип-топ , слой контролов с этим отлично справлялся. Конечно, Web Forms-ы говно. Но хорошее то можно было и позаимствовать .