@ Html.AntiForgeryToken неправильно корректирует отправленную форму, когда я изменяю значения с помощью Firebug - PullRequest
0 голосов
/ 18 октября 2011
@using (Html.BeginForm("Index", "Checkout", FormMethod.Post))
{   
    @Html.AntiForgeryToken(App.WebUI.Helpers.SecurityHelpers.AntiforgeryTokenSalt)
    <input type="hidden" name="amount" value="@Model.PackageCost"/>
    <input type="hidden" name="currency" value="$"/>
    <input type="hidden" name="itemdescription" value="@Model.PackageDescriptor"/>
    <input type="hidden" name="type" value="digital"/>

    <input type="submit" value="Confirmar" class="btn primary frmsubmit" />
}

Я отправляю эту форму контроллеру Checkout:

public class CheckoutController : Controller
{
    [HttpPost]
    [ValidateAntiForgeryToken(Salt = SecurityHelpers.AntiforgeryTokenSalt)]
    public ActionResult Index(decimal amount, string currency, string itemDescription, string type)
    { 
        //Magic here.

Как соль в Форме, так и в Контроллере одинаковы.

public static class SecurityHelpers
{
    public const string AntiforgeryTokenSalt = "tokenFooYouTolkienBladeRunner";
}

У меня сложилось впечатление, что это помешает пользователю изменить скрытое значение в форме с помощью Firebug и отправить его. то есть. Покупка телевизора за 2 $.

Тем не менее, я могу изменить значения с помощью Firebug и отправить его, и он проходит нормально.

Что мне здесь не хватает?

1 Ответ

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

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

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