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私信关注