Sha*_*Sha 7 c# xss asp.net-core
在ASP.NET中,我们有请求验证,但是在ASP.NET Core中,没有这样的事情。
我们如何最好地保护ASP.NET Core应用免受XSS的侵害?
请求验证消失了:https :
//nvisium.com/resources/blog/2017/08/08/dude-wheres-my-request-validation.html-
这个人推荐RegEx Models像这样:
[RegularExpression(@"^[a-zA-Z0-9 -']*$", ErrorMessage = "Invalid characters detected")]
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
...但这不适用于全球化/国际化,即æ,øå??等非拉丁字符。
X-XSS做>受限<XSS保护:https : //dotnetcoretutorials.com/2017/01/10/set-x-xss-protection-asp-net-core/像这样,但是只有有限的支持afaik:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Use(async (context, next) =>
{
context.Response.Headers.Add("X-Xss-Protection", "1");
await next();
});
app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)
Microsoft的文档已有两年历史了:https : //docs.microsoft.com/zh-cn/aspnet/core/security/cross-site-scripting?view=aspnetcore-2.1并没有真正介绍它。
我正在考虑做一些简单的事情,例如:
myField = myField.Replace('<','').Replace('>','').Replace('&','').Repl...;
Run Code Online (Sandbox Code Playgroud)
我曾对Microsoft提出过同样的问题,但我很想听听人们如何在现实生活中解决此问题。
更新:我们正在努力实现的目标:
在我们的应用程序中,我们具有Web表单,人们可以在其中输入姓名,电子邮件,内容等。数据存储在数据库中,将来将在前端系统以及可能的其他系统(如RSS feed,JSON等)上查看。某些表单包含RTF编辑器(简洁),并允许用户标记其文本。恶意用户可以<script>alert('evil stuff');</script>在字段中输入。在ASP.NET Core到达数据库之前,先去除邪恶字符的最佳方法是什么-我宁愿完全不将邪恶脚本存储在数据库中。
我想像这样的东西可以工作:
const string RegExInvalidCharacters = @"[^&<>\""'/]*$";
[RegularExpression(RegExInvalidCharacters, ErrorMessage = "InvalidCharacters")]
public string Name { get; set; }
[RegularExpression(RegExInvalidCharacters, ErrorMessage = "InvalidCharacters")]
public string Content { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
小智 9
您可以在 ASP.NET Core 中使用HtmlSanitizer NuGet 包。
防止存储/反射 XSS的最佳方法之一是对输出进行 HTML 编码。您还可以在将其存储到数据库之前进行编码。因为无论如何您都不需要这些字段的输出为 HTML 格式。
使用正则表达式的解决方案并不总是有效。你在这里所做的就是依赖黑名单。依赖白名单总是更好、更安全(在这种情况下您不需要)。或者如果可能的话,对输出进行 HTML 编码。
我知道这已经有一年了,但是为了您(和其他人)的参考,您可能需要考虑创建一个 ResourceFilter 或中间件来清理传入的请求。您可以在那里使用任何您想要的工具或自定义代码,但关键是所有传入请求都经过此过滤器以清除不良数据。
请务必根据您的应用/需求使用正确的过滤器。ResourceFilter 将在模型绑定之前运行,ActionFilter 将在模型绑定之后运行。
| 归档时间: |
|
| 查看次数: |
4108 次 |
| 最近记录: |