没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
全文可编辑 word 文档 页眉与背景水印可删除
1
CSRF 在 ASP.NET Core 中的处理方法详解
前言
前几天,有个朋友问我关于 AntiForgeryToken 问题,
由于对这一块的理解也并不深入,所以就去研究了一番,梳
理了一下。
在梳理之前,还需要简单了解一下背景知识。
AntiForgeryToken 可以说是处理/预防 CSRF 的一种处理
方案。
那么什么是 CSRF 呢?
CSRF(Cross-site request forgery)是跨站请求伪造,
也被称为 One Click Attack 或者 Session Riding,通常缩写
为 CSRF 或者 XSRF,是一种对网站的恶意利用。
简单理解的话就是:有人盗用了你的身份,并且用你的
名义发送恶意请求。
最近几年,CSRF 处于不温不火的地位,但是还是要对这
个小心防范!
更 加 详 细 的 内 容 可 以 参 考 维 基 百 科 : Cross-site
request forgery
下面从使用的角度来分析一下 CSRF 在 ASP.NET Core 中
的处理,个人认为主要有下面两大块
全文可编辑 word 文档 页眉与背景水印可删除
2
视图层面
控制器
层面视图层面
用法
@Html.AntiForgeryToken()
在视图层面的用法相对比较简单,用的还是 HtmlHelper
的那一套东西。在 Form 表单中加上这一句就可以了。
原理浅析
当在表单中添加了上面的代码后,页面会生成一个隐藏
域,隐藏域的值是一个生成的 token(防伪标识),类似下面
的例子
<input name="__RequestVerificationToken"
type="hidden"
value="CfDJ8FBn4LzSYglJpE6Q0fWvZ8WDMTgwK49lDU1XGuP5
-5j4JlSCML_IDOO3XDL5EOyI_mS2Ux7lLSfI7ASQnIIxo2ScEJv
nABf9v51TUZl_iM2S63zuiPK4lcXRPa_KUUDbK-LS4HD16pJusF
Rppj-dEGc" />
其中的 name="__RequestVerificationToken"是定义的
一个 const 变量,value=XXXXX 是根据一堆东西进行 base64
编码,并对 base64 编码后的内容进行简单处理的结果,具
全文可编辑 word 文档 页眉与背景水印可删除
3
体的实现可以参见 Base64UrlTextEncoder.cs
生成上面隐藏域的代码在 AntiforgeryExtensions 这个
文 件 里 面 , github 上 的 源 码 文 件 :
AntiforgeryExtensions.cs
其中重点的方法如下:
public void WriteTo(TextWriter writer,
HtmlEncoder encoder)
{
writer.Write("<input name=\"");
encoder.Encode(writer, _fieldName);
writer.Write("\" type=\"hidden\" value=\"");
encoder.Encode(writer, _requestToken);
writer.Write("\" />");
}
相当的清晰明了!
控制器层面
用法
[ValidateAntiForgeryToken]
[AutoValidateAntiforgeryToken]
[IgnoreAntiforgeryToken]
这三个都是可以基于类或方法的,所以我们只要在某个
控制器或者是在某个 Action 上面加上这些 Attribute 就可
剩余19页未读,继续阅读
资源评论
mmoo_python
- 粉丝: 4014
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功