- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一些现有的 MVC Web 服务,它们在网页中称为 AJAX 样式。这些服务利用 ValidateAntiForgeryToken 属性来帮助防止请求伪造。
我们正在寻求将这些服务迁移到 Web API,但似乎没有等效的防伪功能。
我错过了什么吗?是否有不同的方法来解决 Web API 请求伪造问题?
最佳答案
您可以实现这样的授权属性:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public sealed class ValidateAntiForgeryTokenAttribute : FilterAttribute, IAuthorizationFilter
{
public Task<HttpResponseMessage> ExecuteAuthorizationFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
{
try
{
AntiForgery.Validate();
}
catch
{
actionContext.Response = new HttpResponseMessage
{
StatusCode = HttpStatusCode.Forbidden,
RequestMessage = actionContext.ControllerContext.Request
};
return FromResult(actionContext.Response);
}
return continuation();
}
private Task<HttpResponseMessage> FromResult(HttpResponseMessage result)
{
var source = new TaskCompletionSource<HttpResponseMessage>();
source.SetResult(result);
return source.Task;
}
}
然后用它来装饰您的 API 操作:
[ValidateAntiForgeryToken]
public HttpResponseMessage Post()
{
// some work
return Request.CreateResponse(HttpStatusCode.Accepted);
}
关于asp.net-mvc - Web API 和 ValidateAntiForgeryToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476883/
我创建了两个项目,假设是 projectA 和 projectB。 现在在项目 A 中,我创建了以下操作方法。 [HttpPost] [ValidateAntiForgeryToken
我有一个带有 POST 操作的通用 MVC Controller 。该 Controller 用于多个应用程序使用的公共(public)项目。我们正尝试在交错发布过程中添加 CSRF 保护,我们通过
我认为这是相当简单的事情。 ValidateAntiForgeryToken 是一个过滤器属性,我们可以将其应用于 MVC Controller 上的 post 方法。 它将检查通过调用 @Html.
我阅读了一些有关使用 ValidateAntiForgeryToken 来防止 XSRF/CSRF 攻击的文章。然而,我所看到的似乎只与 MVC 有关。 这些是我看过的文章: ValidateAnti
我在一个方法上使用了几个授权过滤器。 [SessionState(SessionStateBehavior.Required)] public class AuthenticationFilterAt
你能解释一下吗ValidateAntiForgeryToken目的并向我展示有关 MVC 4 中的 ValidateAntiForgeryToken 的示例? 我找不到任何解释此属性的示例? 最佳答案
我们一直收到“未提供或无效所需的防伪 token ”。错误,在进一步的调查中,我设法以最简单的形式重现了这个问题——我要么做错了什么,要么这是防伪 token 系统的限制。 无论哪种方式,我都会很感激
安全第一。 MVC 最佳实践建议添加 [ValidateAntiForgeryToken]属性到每个 [HttpPost]行动。 如何在应用程序的一个独特点强制执行此规则? 最佳答案 以下类允许使用
我正在查看 github 中的 SS 代码,但我找不到任何与 ValidateAntiForgeryToken 等效的代码,因为我不想重新发明轮子,我想尽可能多地重用 SS 框架,我认为解决方案可能是
这个问题在这里已经有了答案: ValidateAntiForgeryToken purpose, explanation and example (4 个回答) 7年前关闭。 谁能告诉我那个属性是什么
默认情况下(即通过脚手架)将此过滤器应用于 Login 仅有意义。操作,据我所知,这个 token 在已经与登录 ID 关联时效果最好。与它适用于Login , 如果用户尝试登录两次,我会遇到问题,并
出于安全原因,我更喜欢在我的 baseController 之上添加属性 ValidateAntiForgeryToken,以便所有操作都将受到该属性的影响。 我只想为单个操作禁用该属性。 不为我的
防伪 token 接受盐值。选择盐是否存在任何安全问题,例如 最小长度要求 加密强度高 字母数字和其他字符的混合(例如密码) 此外,客户端可以查看盐值吗?查看源代码,它似乎将盐值添加到 cookie
我刚才试图通过提供防伪 token 来保护 post 方法免受侧脚本攻击,但注意到,在 .Net Core 中还有另一个名为 AutoAntiForgeryToken 的属性。 XML 注释和在线搜索
我有点理解[ValidateAntiForgeryToken] 是如何防止 CSRF 的,我已经通读了 this question ,但我不确定这是否会阻止某人伪造表单帖子的参数。 ItemList
编辑:我尝试了更多的事情..请参阅此问题的结尾以获取更新 我正在尝试通过 AJAX 将一些数据以及 AntiForgeryToken 从 MVC 应用程序中的页面传递到 Controller 。这不是
我读到 POST 被认为是安全的,GET 不安全,我们应该在每个 Controller 的每个操作中实现 [ValidateAntiForgeryToken]。 问题是:使用[POST]时需要使用[V
我已经在一些负载平衡的 Linux 服务器上部署了一个 asp.net 核心应用程序。由于 ValidateAntiForgeryToken 属性失败(如果 POST 没有返回到与生成我的表单的机器相
考虑一个在 [ValidateAntiForgeryToken] 指令中使用 Salt 参数的 ASP.NET MVC 应用程序。 场景是该应用程序将被许多客户使用。在编译时就知道 Salt 并不是非
我previously asked a question regarding this ,得到了interesting answer这让我开始询问更多问题。因此,这是我弄清楚 AJAX 帖子的内部工作
我是一名优秀的程序员,十分优秀!