在url.action中传递带隐藏参数的url

时间:2015-09-18 05:36:05

标签: c# asp.net-mvc razor

有没有办法隐藏参数并传递

window.location.href = '@Url.Action("index", "mycntroller")?at='+119nuju

3 个答案:

答案 0 :(得分:3)

虽然您可以使用POST请求或使用coockies或请求标题或... 以防止参数乍一看,但您应该知道隐藏参数将永远不会帮助提高您网站的安全性。 因为所有参数都可以在Developer ToolsFireBug等工具中进行监控,而则完全可见

隐藏参数通常是为了获得更好的用户体验,用户无法看到对他毫无意义的参数。

因此,最好不要在不需要时尝试隐藏参数。

如果值119nuju对您非常重要,请不要以这种方式传递,而是考虑加密或在TempData / Session中使用密钥并传递该密钥而不是该值。然后,当请求返回到服务器时,通过密钥检索值。

重要
如果您使用此类方式(加密,密钥,...),则检查用户的权限以查看此用户是否可以访问119nuju或任何相关资源仍然非常重要,以防止{{3 }}

答案 1 :(得分:0)

一种方法是cookie。您可以通过使用cookie传递参数值来隐藏。

在客户端设置cookie。

function SetCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}
SetCookie('at','+119nuju',1);

在服务器端获取cookie值。

HttpContext.Request.Cookies["at"] != null // Check is exist
HttpCookie cookie = HttpContext.Request.Cookies.Get("at"); //Get cookie

答案 2 :(得分:0)

您可以隐藏标题中的值。但是需要更多的编码。这是一个很好的方法。搜索更多关于在header中传递值的信息。它更加安全,因为值在请求头中而不是在请求体中传递。它比加密好得多,因为即使该方法也会在你的url中显示一些随机文本。干净,你可以使用它。