C# 提交后表单在URL中显示值。不应该';它不是在隐藏它们吗?
当我使用HttpPost时,表单值不应该隐藏在我的URL中吗 下面是我用来生成付款确认页面的Razor代码:C# 提交后表单在URL中显示值。不应该';它不是在隐藏它们吗?,c#,asp.net-mvc-3,http-post,C#,Asp.net Mvc 3,Http Post,当我使用HttpPost时,表单值不应该隐藏在我的URL中吗 下面是我用来生成付款确认页面的Razor代码: @using (Html.BeginForm("Index", "Checkout", new { amount = Model.PackageCost, currency = "$", itemDescription = Model.PackageDescriptor, type = "digital" }, FormMethod.Post)) { <input
@using (Html.BeginForm("Index", "Checkout", new { amount = Model.PackageCost, currency = "$", itemDescription = Model.PackageDescriptor, type = "digital" }, FormMethod.Post))
{
<input type="submit" value="Confirmar" class="btn primary frmsubmit" />
}
那么是什么原因呢?如果是POST表单,为什么不隐藏这些值?因为这些不是表单值,而是路由值。表单值是
标记的值
我假设您不需要任何路由值(省略第三个参数),而是使用适当的默认值创建
标记。如果普通用户看不到它们,请使用
(这显然不是安全功能)
您还应该使用反请求伪造令牌。是,除了那些不是表单值。可能的解决方案?创建一个带有值的表单,并使用CSS隐藏它们?
可用于向post表单添加额外的不可见字段。但很明显,恶意用户仍然可以读取和操纵它们。
<form action="/Checkout?amount=50&currency=%24&itemDescription=Paquete%20Gold50%20%7C%2050%24%20(59%20lances)&type=digital" method="post">
<input type="submit" value="Confirmar" class="btn primary frmsubmit" />
</form>
http://localhost:5868/Checkout?amount=50¤cy=%24&itemDescription=Paquete%20Gold50%20%7C%2050%24%20%2859%20lances%29&type=digital