架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 999|回复: 2

[资料] ASP.NET MVC 请求 XSS 危险内容验证(ValidateInput)

[复制链接]
发表于 2023-7-8 22:05:07 | 显示全部楼层 |阅读模式
需求:提取 ASP.NET MVC 中对请求表单中潜在危险的数据进行验证的源码。简单来说就是验证请求的数据是否有跨站点脚本( XSS ) 内容,MVC 中默认情况下会阻止 XSS

跨站点脚本( XSS ) 是一种安全漏洞,可以在某些Web 应用程序中发现。XSS 攻击使攻击者能够将客户端脚本注入 其他用户查看的网页中。攻击者可能会利用跨站点脚本漏洞来绕过同源策略等访问控制。

ValidateInput:引发对通过 Cookies 、Form 和 QueryString 属性访问的集合的验证。该 HttpRequest 类使用输入验证标志来跟踪是否对通过 Cookies属性 Form访问 QueryString 的请求集合执行验证。

public void ValidateInput() {
            // It doesn't make sense to call this multiple times per request.
            // Additionally, if validation was suppressed, no-op now.
            if (ValidateInputWasCalled || RequestValidationSuppressed) {
                return;
            }

            _flags.Set(hasValidateInputBeenCalled);

            // This is to prevent some XSS (cross site scripting) attacks (ASURT 122278)
            _flags.Set(needToValidateQueryString);
            _flags.Set(needToValidateForm);
            _flags.Set(needToValidateCookies);
            _flags.Set(needToValidatePostedFiles);
            _flags.Set(needToValidateRawUrl);
            _flags.Set(needToValidatePath);
            _flags.Set(needToValidatePathInfo);
            _flags.Set(needToValidateHeaders);
        }

文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.web.httprequest.validateinput?view=netframework-4.8

验证潜在危险数据:HttpRequest -> ValidateString -> CrossSiteScriptingValidation.IsDangerousString,如下图:

QQ截图20230708215337.jpg

源码地址:

https://referencesource.microsoft.com/#System.Web/HttpRequest.cs
https://referencesource.microsoft.com/#System.Web/CrossSiteScriptingValidation.cs

将源码复制到项目中,测试如下:

QQ截图20230708220138.jpg

源码:


如果实在想接收危险内容可以使用:Request.Unvalidated.Form

(完)




上一篇:ASP.NET MVC 通过反射获取所有接口地址
下一篇:.NET/C# 使用 SqlConnectionStringBuilder 比较数据库连接
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-7-8 22:06:32 | 显示全部楼层
AllowHtmlAttribute 类:通过跳过属性的请求验证,允许请求在模型绑定过程中包含 HTML 标记。 (强烈建议应用程序显式检查所有禁用请求验证的模型,以防止脚本攻击。)

https://learn.microsoft.com/zh-c ... .allowhtmlattribute
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-7-8 22:06:49 | 显示全部楼层
ValidateAntiForgeryToken 和 AutoValidateAntiforgeryToken 防伪造标记详解
https://www.itsvse.com/thread-9568-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-27 14:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表