页的详细信息,我想通过保险ID到控制器,同时获得保险的细节,它看起来像从查询字符串,而不是控制器:如何通过值id同时获得在MVC
// GET:/保险/详细资料/ 123456789
但出于安全原因,我不想在查询字符串中传递此id号123456789。 有人可以建议我最好的方法。我是MVC的新手。
谢谢
页的详细信息,我想通过保险ID到控制器,同时获得保险的细节,它看起来像从查询字符串,而不是控制器:如何通过值id同时获得在MVC
// GET:/保险/详细资料/ 123456789
但出于安全原因,我不想在查询字符串中传递此id号123456789。 有人可以建议我最好的方法。我是MVC的新手。
谢谢
尝试通过POST提交值作为隐藏参数。您需要使用表单来执行POST提交。你不能使用链接。
<form method="POST" action="/Insured/Details">
<input type="hidden" name="insuredid" value="123456789"/>
<input type="submit"/>
</form>
你会再拿到通过请求参数的值。如果使用Java servlets,它看起来是这样的:
String myInsuredId = request.getParameter("insuredid");
我想它会和其他平台类似。
注意:尽管将值作为隐藏参数传递会隐藏数据,但这并不妨碍人们嗅探提交的数据或检查页面的HTML源代码。如果你真的想要这样做,你需要使用某种形式的加密/安全性。尝试查看HTTPS帖子。
您需要清理控制器中的输入,例如,如果客户已登录,您可以检查传递给控制器的ID是否属于客户。
任何在请求中可传递的内容(无论是POST还是GET)都是可欺骗的。
您还应该考虑通过HTTPS提供页面服务。
E.g. (asp.net MVC/C#)
public ActionResult Details(string id)
{
if (Check(id) == false)
{
// Handle invalid input
throw new HttpException(404, "HTTP/1.1 404 Not Found");
}
// create the model
...
}
如果你有权访问表单,我会使用'FormMethod.POST',它将发布没有queryString的表单的细节。但实际上如果有人想要修改ID,他们可以很容易地修改HTML来实现这一点。 – Qpirate 2013-02-28 16:04:36
我不确定这是否是一种安全的方式。 – user1882705 2013-02-28 16:11:37
没有办法阻止一个人改变一个网页HTML到客户端,但你可以做的是添加'Authorisation'功能来查看他们是否被允许访问请求的数据,但这是一个不同的方面。如果你要问的是隐藏'QueryString'中的值,那么最好的办法就是'将'Post'后面的值。 – Qpirate 2013-02-28 16:24:12