Безопасные вызовы ASP.NET MVC для контроллеров - PullRequest
2 голосов
/ 21 января 2012

Быстрый вопрос;

Предоставление контроллера Пользователю и функции и Получить, чтобы кто-то мог позвонить;

mydomain.com / user / get и получить доступ к функциональности там.

Каковы наилучшие методы, позволяющие только моему приложению иметь возможность вызывать это?

Спасибо

Ответы [ 2 ]

3 голосов
/ 21 января 2012

Декорирование метода действия с помощью атрибута [ChildActionOnly] обеспечит невозможность прямого вызова метода действия на контроллере пользователем, введя URL-адрес.EG

 [ChildActionOnly]
        public ActionResult _CantNavigateHere()
        {
            return View();
        }  
0 голосов
/ 27 апреля 2012

Вы можете использовать AntiForgeryToken с MVC3 и Ajax.

Вот как я это делаю. (конечно, это не надежно, но добавляет еще один уровень безопасности)

На ваш взгляд, в любом месте, вывод:

@Html.AntiForgeryToken()

И в ваш Ajax-вызов включите это значение в переменные записи, такие как:

$.post("/Controller/Action/",
                { 'id': var_id, '__RequestVerificationToken': $("input[name='__RequestVerificationToken']").val() }, 
                function (data) { /* handle request */ });

А в вашем контроллере:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Action(int id) {..}

Кроме того, вы также можете проверить ссылающийся хост и отклонить любой хост, который не соответствует вашему домену. Это может быть подделано, но опять же, это просто еще один слой для добавления.

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