2011-10-18 86 views
0
@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" /> 
} 

我張貼這種形式來結帳控制器不正確無效提交的表單在控制器中是一樣的。@ Html.AntiForgeryToken當我改變值與螢火蟲

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

我的印象是,這會阻止用戶更改表單中的隱藏值使用Firebug並提交。即。購買電視2美元。

但是,我可以改變使用Firebug的值並提交它,並且它通過罰款。

我在這裏錯過了什麼?

回答

4

您缺少anti forgery token的全部內容。它旨在阻止CSRF攻擊,而不是用戶更改您自己網站上的表單數據。此外,除非您打算允許客戶提供,否則您不應從表單數據中檢索商品的價格。

+0

看來我完全誤解了這件事。感謝分享! –