Есть ли причина фильтровать действия POST? - PullRequest
1 голос
/ 18 октября 2011

У меня есть пользовательский [AuthenticationFilter], который просто перенаправляет пользователей, которые не авторизованы для доступа к административному контенту.

Я применяю фильтр к

[AuthenticationFilter]
public ActionResult Index() {}

Но у меня также есть

    [HttpPost]
    public ActionResult Index(HttpPostedFileBase file) {}

для обработки загрузки файлов. Нужен ли здесь атрибут?

Мой инстинкт кишки говорит мне, что нет. Нет способа поместить файл на страницу, потому что uploadButton заблокирован от загрузки первым методом.

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

Итак, есть ли причина применить [AuthenticationFilter] к обработчику файлов?

Ответы [ 3 ]

3 голосов
/ 18 октября 2011

Вы никогда не можете рассчитывать на то, что ваш клиентский элемент управления (отключив кнопку загрузки) предотвратит попадание чего-либо в ваш сервер. Конечные пользователи имеют полный контроль над тем, что происходит на клиенте. Они могут включать элементы управления, удалять или изменять скрытые поля, перехватывать запросы браузера или полностью обходить браузер и создавать свои собственные запросы (с любым файлом, который они хотят).

В любом месте, где у вас есть возможность повысить безопасность на сервере, вы должны это сделать. Нет запроса, который можно остановить, просто используя элементы управления браузера.

2 голосов
/ 18 октября 2011

Я бы перевернул вопрос и спросил, есть ли причины не применять AuthenticationFilter к методу? Если вы знаете, что для этого метода может быть риск, почему бы не применить фильтр; если у вас нет проблем с производительностью вашего AuthenticationFilter, сделайте это. Фактически, если вы знаете, что весь контроллер предназначен для использования авторизованными пользователями, примените фильтр на уровне контроллера!

2 голосов
/ 18 октября 2011

Я полагаю, что кто-то еще мог бы отправить POST, используя что-то вроде Fiddler.Усилия по обеспечению этого метода минимальны, поэтому я бы сказал, что лучше быть в безопасности, чем потом сожалеть.

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