隐藏查询字符串参数

时间:2012-01-22 02:53:02

标签: asp.net-mvc-3 query-string query-parameters

我有一个用于创建记录的GET操作。因为页面有点动态,所以我不使用模型来保存数据。我去做一些OAuth,后来才回到创建屏幕。为了传回数据,我使用查询字符串重定向。我在GET操作中解析查询字符串,然后显示视图。问题是,查询字符串显示在浏览器中。这会显示伪敏感数据。

由于我只使用查询字符串来传输数据,我想知道是否可以抛出查询字符串以防止它出现在浏览器上。

否则,有没有办法在没有重定向的情况下转到另一个动作?我发现,如果我直接调用“其他”动作方法,它会尝试查找原始动作的视图。我可以明确地将return View(viewModel)行更改为return View("create", viewModel),但这看起来很脏。

2 个答案:

答案 0 :(得分:2)

您应该考虑更改操作以接受POST请求。至少这会阻止敏感信息出现在浏览器中。为了提高安全性,您的网站应通过SSL提供。

您可以尝试的另一件事是加密敏感值或整个查询字符串。唯一的问题是,除非您要求用户登录,否则这也将保留在浏览器的历史记录中。

答案 1 :(得分:0)

看起来你的行动方法试图做太多。身份验证/授权是一个单独的问题,不应该是操作方法的一部分。最好将身份验证工作移到动作过滤器中。

创建一个扩展授权属性的类,并覆盖其OnAuthorization方法以执行授权工作。

这将释放您的控制器操作方法以接受POST请求。