从表单本身外部激活注销表单是否安全

本文关键字:表单 注销 是否 安全 激活 外部 | 更新日期: 2023-09-27 18:30:37

关于

StackOverflow的第一个问题,所以如果这是一个重复的问题,请原谅我(我保证我先搜索了)。

我正在使用 MVC 4 构建一个简单的后台应用程序 ASP.NET。 注销的默认代码使用表单来使用验证功能,如下所示:

@using (Html.BeginForm("LogOut", "Account", FormMethod.Post, new { id = "logoutForm" }))
{
    @Html.AntiForgeryToken()
    <a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
}

但是,这给我的导航栏留下了一些奇怪的样式问题。 我突然想到,我可以通过将链接移动到表单之外来轻松解决它,如下所示:

<a href="javascript:document.getElementById('logoutForm').submit()">Log Out</a>
@using (Html.BeginForm("LogOut", "Account", FormMethod.Post, new { id = "logoutForm" }))
{
    @Html.AntiForgeryToken()
}

然而,这让我想知道:这仍然安全吗?

(我认为是的,但我是 ASP.NET 新手,所以我想得到确认。

从表单本身外部激活注销表单是否安全

如果该方法只接受 POST 请求并且您验证防伪令牌LogOut则完全没问题。

[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult LogOut()
{
    //log out user
}
首先,

我假设页面按照您希望的方式提交。

表单安全性更多地是关于您如何提交数据的上下文。如果需要安全,那么您可能需要考虑一些内部系统加密或SSL证书。

我会

尝试解决"我的导航栏奇怪的样式问题",而不是像这样使用HTML元素。

如果您需要帮助,请发布 HTML。

顺便说一句,我认为防伪令牌可以与您发布的内容一起使用。