UR.ANUS
Asp.net mvc framework
вернуться

Магдануров Гайдар Ильдарович

Шрифт:

? проверка поля Referer POST-запроса может показать истинный сайт, с которого производился запрос, на основании этой проверки можно защититься от атаки;

? для каждой формы можно сформировать скрытое поле со сформированными секретными данными так, как мы делали это для GET-запросов. При отправке данных с формы скрытое поле также будет отправлено. Нам достаточно просто проверить соответствие переданных данных со сформированными на сервере, чтобы убедиться в том, что POST-запрос безопасен.

ASP.NET MVC содержит вспомогательный набор инструментов для реализации второго сценария защиты от CSRF-атак. Инструменты представляют собой метод расширения Html.AntiForgeryToken, который формирует скрытое поле в разметке:

<% using (Html.BeginForm) { %>

... // здесь набор элементов управления

<%= Html.AntiForgeryTokenO %>

<input type="submit" value="Change Password" />

<% } %>

На примере показано использование метода расширения Html.AntiForgeryToken, который в результате сформирует следующую разметку:

<input name="_RequestVerificationToken" type="hidden"

value="71QjBJILoVngYTD+UZ3JTn8KMsJ/Yo48Q2sSOLo6cgpYHc2qOG4UudRujINZtg4L" />

Для проверки этого скрытого поля на сервере необходимо добавить к вызываемым действиям атрибут ValidateAntiForgeryToken так, как показано во фрагменте кода:

[ValidateAntiForgeryToken]

public ActionResult ChangePassword(string currentPassword,

string newPassword, string confirmPassword)

Теперь любой POST-запрос к действию ChangePassword приведет к сопоставлению скрытого параметра формы с внутренним, сформированным на сервере. В случае, если параметры не совпадают, возникнет исключение, которое предотвратит несанкционированный доступ (рис. 7.11). Таким образом, проделав несложные действия, вы надежно защитите себя от CSRF-атак.

Расширения jQuery

Библиотека jQuery получила свое широкое распространение и огромную популярность не только за свои возможности в работе с DOM-моделью документа и Ajax. В большой степени популярности jQuery способствовало сообщество разработчиков, которые создавали и создают расширения к jQuery. Простота процесса создания плагинов к этой библиотеке послужила бурному росту числа расширений функционала jQuery. На текущий момент уже существует несколько тысяч всевозможных плагинов, которые помогают решать полный спектр задач на стороне клиента: от упрощения работы с данными до реализации богатых визуальных эффектов.

Существуют плагины jQuery и для упрощения работы с Ajax. Найти их можно по адресугде на момент написания книги таких плагинов было представлено 182 штуки. В табл. 7.3 перечислены некоторые из них.

Выбор между ASP.NET Ajax и jQuery

Перед разработчиками проектов на базе ASP.NET MVC может встать вопрос: с помощью чего реализовывать работу с Ajax-запросами при разработке клиентской части проекта. И jQuery и ASP.NET Ajax выполняют схожие функции, хотя различаются в подходах. Ответ на этот вопрос зависит от требований, которые разработчики предъявляют к проекту. Рассмотрим некоторые из них по порядку.

? Расширяемость. Безусловным лидером в плане расширяемости является jQuery, к которой написано тысячи плагинов, расширяющих ее функциональность. Более того, написание своего плагина не представляет сложности, и разработчик всегда может расширить функциональность jQuery для собственных нужд.

? Сложность. Предполагается, что для работы с jQuery требуются навыки JavaScript-разработки и знание принципов работы самой библиотеки. С другой стороны, ASP.NET Ajax предлагает решение задач, связанных с Ajax-запросами декларативным путем, знакомым каждому разработчику ASP.NET.

? Перспективы. Используя jQuery, разработчик получает не только механизм управления Ajax-запросами, но и богатый функционал по работе с DOM-моделью. С помощью jQuery разработчик может производить очень быстрые и оптимизированные процедуры поиска, модификации, удаления и добавления элементов DOM. jQuery позволяет оперировать запросами с помощью мощных селекторов, основанных на синтаксисе селекторов CSS3. Это дает в руки разработчика мощный инструмент по быстрейшему доступу к любому набору элементов DOM-страницы на стороне клиента. С другой стороны, ASP.NET Ajax продолжает развиваться, и в версии 4.0 разработчиков ждет масса нововведений, которые позволят работать с данными на базе шаблонов, введут связывание данных и даже контексты данных. Эти высокоуровневые абстракции в перспективе могут значительно облегчить жизнь разработчика.

? Затратность. Использование любой JavaScript-библиотеки означает дополнительные расходы на количество пересылаемой информации от сервера клиенту. С применением GZip-сжатия на стороне сервера размер передаваемых данных при использовании библиотеки jQuery составляет около двадцати килобайт. С применением функционала ASP.NET Ajax это число может увеличиться до двух раз. Но при расчете затратности необходимо учитывать потенциальное увеличение размера JavaScript-файлов при использовании сторонних или собственных плагинов к jQuery. Кроме того, в перспективе ASP.NET Ajax получит механизм гибкого контроля над размером JavaScript-кода, когда разработчик сможет указать, какие части функционала следует использовать и отсылать клиенту, что значительно уменьшит размер пересылаемых данных.

  • Читать дальше
  • 1
  • ...
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • ...

UR.ANUS - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • support@anus.bid