2010-02-07 3 views
4

Я планирую работу над новым проектом, и теперь я искушаю использовать ASP.NET MVC. Мой проект планирует использовать JQuery и AJAX (хотя клиенты, не поддерживающие JS, также будут поддерживаться). Исходя из стандартного фона ASP.NET, я все еще пытаюсь разгадать парадигму MVC (с большой помощью от Scott Guthrie). Однако моя главная проблема с использованием MVC - это аспекты безопасности. Я немного поработал с ASP.NET, и я знаю, как обрабатывать различные атаки. Нужно ли мне переучивать безопасность с помощью ASP.NET MVC? Появляются новые угрозы или даже новые способы обработки старых угроз, которые мне нужно будет прочитать? Я заказал несколько книг ASP.NET MVC (у которых есть главы по безопасности), но я хотел бы узнать о чьем-либо опыте этого.Новое в ASP.NET MVC - Должен ли я переучивать безопасность?

Thanks

ответ

2

В зависимости от того, что вы подразумеваете под защитой.

Авторизация в основном такая же, если не проще. Аутентификация форм поддерживается и поддерживается, и вам нужно только привязать атрибут [Authorize] к контроллерам или действиям контроллера. Не так много, чтобы учиться там.

ViewState не работает, поэтому вам не нужно беспокоиться о валидации ViewState или любом из этих kludge.

Если вы имеете в виду XSS, я бы сказал, что это примерно то же самое; вам нужно, чтобы избежать данных на выходе, и это очень легко сделать:

<%= Html.Encode(Model.SomeString) %> 

Единственное, что я могу думать, что вы могли бы найти немного по-другому обрабатывает CSRF/XSRF. К счастью, большая часть этого уже built in to the framework.

Так что в целом я бы сказал нет, кривая обучения для безопасности в ASP.NET MVC не должна быть такой же крутой, как кривая обучения для самой архитектуры.

+0

Спасибо, это делает намного легче преодолеть кривую обучения. На стороне примечания, если я использую 'UpdateModel()', он автоматически HTMLEncode мои данные? Я понимаю, что я должен делать это вручную при передаче объектов модели, но не совсем уверен, что делать при использовании UpdateModel. Еще раз спасибо. – keyboardP

+0

@TenaciousImpy: вам нужно только беспокоиться о кодировании/экранировании на выходе, когда данные, которые вы представляете, возможно, исходили из ненадежного источника. За некоторыми исключениями, на самом деле не нужно санировать то, что приходит (я предполагаю, что вы параметризуете свои SQL-запросы и все такое). Но чтобы ответить на ваш точный вопрос, нет, «UpdateModel» не кодирует ваши HTML-коды HTML, потому что тогда вы бы закодировали его дважды по мере его отображения, и посетители вашего сайта увидели бы странное экранированное '>' в середине слов , – Aaronaught

+0

С ASP.NET MVC 2, '<%: Model.SomeString%>' автоматически кодирует текст для вас. Обратите внимание на ':' вместо '='. – Omar

Смежные вопросы