Использование ajax в asp.net - PullRequest
4 голосов
/ 06 мая 2011

Меня немного смущает, какой метод использовать:
1 - использование Jquery для вызова страницы HttpHandler, реализующей заказ.
2 - использование ICALLBACKEventHandler - читать дальше .
Можете ли вы дать мне совет, какой из них эффективнее использовать?
Спасибо

1 Ответ

7 голосов
/ 09 мая 2011

Базовое чтение

Я предлагаю вам эти ссылки, чтобы помочь вам лучше понять варианты и выбрать то, что вы хотите:

Мой выбор

Я предпочитаю использовать jQuery.ajax(), а также плагин шаблонов jQuery при необходимости (загрузка табличных данных из вызовов AJAX). Облегченный подход и гораздо больший контроль над разработчиком. Мне не нравится, как Microsoft любит генерировать глупые коды, когда мы используем их обработчики .

дырки в безопасности

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

Ваше замечание о легкости манипулирования Referer было интересным, но эта уязвимость не является исключительной для jQuery. Проблема в том, что сама концепция AJAX уже несет в себе несколько дыр в безопасности , которые являются известными проблемами, обсуждаемыми годами.

Важно отметить, что использование ICallbackEventHandler не является решением , поскольку это всего лишь еще один способ генерировать запросы AJAX без необходимости его ввода. Но если асинхронный запрос существует, он всегда может быть каким-либо образом перехвачен, например, $.ajax().

Наконец, вы уже дали «почти» ответ: лучше работать с передачей маркеров безопасности в качестве параметра . Если вы работаете с MasterPage, генерация токена в HiddenField будет абстрагирована до одного кода. И вы можете инкапсулировать с помощью функции JavaScript, ответственной за выполнение AJAX-вызовов с этим токеном в качестве параметра. Все зависит только от архитектуры программного обеспечения.

Я назвал это «почти» ответом, потому что ничто не является полностью безопасным, и токены безопасности также могут быть взломаны . Да, это намного сложнее и редко, но 99% никогда не бывает 100%.

Резюмируя

Ваш второй вариант с ICallbackEventHandler может иметь много проблем с безопасностью, а также ваш первый вариант с $.ajax(), так как обработчик сгенерирует некоторый код, похожий на любой код, который вы наберете. В конце концов, ваш выбор должен быть делом вкуса. Но не забудьте прочитать и принять необходимые подходы к безопасности в обоих случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...