AI智能
改变未来

谈谈ASP.NET Core MVC中预防跨站脚本攻击(xss)与跨站请求伪造(CSRF)

XSS
Cross-Site Scripting 跨站脚本攻击:攻击者将客户端脚本注入到其他用户查看的网页中。
不被信任的数据:
• HTML input
• HTTP Headers
• Query strings
• Attributes,EXIF 信息

防止 XSS
• HTML Encoding:> 变成 > < 变成 <
• Razor 默认开启了 HTML Encoding,可以手动关闭
• 正则表达式
• 反 XSS 的第三方库
• 对请求进行验证

内置的编码器
• HtmlEncoder
• JavaScriptEncoder
• UrlEncode

CSRF
Cross-Site Reqest Forgery 跨站请求伪造

OWASP 的 CSRF 防范方案
• Header 验证
• Synchronizer Token Pattern
• 服务器发送随机字符串到客户端,客户端下次请求时需要把字符串原封不动返回去
• Double Submit Cookie
• 服务器发送随机字符串到客户端,客户端返回的请求和 Cookie 里面都要包含原封不动的字符串

Docs:Prevent Cross-Site Request Forgery (XSRF/CSRF) attacks in ASP.NET Core中

[ValidateAntiForgeryToken]//对单个 Action 启用[AutoValidateAntiForgeryToken]//对所有 POST 启用[IgnoreAntiForgeryToken]//关闭单个 Action 的验证


这里定义全局的post验证,假如对单个Action取消验证,可以在该Action上加上[IgnoreAntiForgeryToken]

services.AddAntiforgery(options =>{// Set Cookie properties using CookieBuilder properties†.options.FormFieldName = \"AntiforgeryFieldname\";options.HeaderName = \"X-CSRF-TOKEN-HEADERNAME\";options.SuppressXFrameOptionsHeader = false;});services.AddMvc(options =>{options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());});
  • 点赞
  • 收藏
  • 分享
  • 文章举报

覃鸿宇发布了17 篇原创文章 · 获赞 6 · 访问量 356私信关注

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 谈谈ASP.NET Core MVC中预防跨站脚本攻击(xss)与跨站请求伪造(CSRF)