记.Net Framework中wwwroot文件限制用户访问
背景
项目.Net Framework做的,已经线上跑了很多年了,突然发现用户上传的文件都被放到了wwwroot//Content/Upload目录,这些文件都是比较重要的,程序用来读取解析数据的,但是被直接可以公开访问了。
其实要改也很简单,代码改一下,文件挪一下位置就可以了,但是如果这样改就是一个线上大Bug裸奔事故。
需求
其实需求比较简单,就是让wwwroot//Content/Upload目录不可以被访问就可以了。
思路
.Net Framework时代其实就有现在.Net Core中间件的这种雏形。
public class MimeMappingModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PostResolveRequestCache += (sender, e) =>
{
var app = (HttpApplication)sender;
var response = app.Response;
var filePath = app.Request.FilePath;
if(filePath.Contains("/Content/Upload"))
{
response.StatusCode = 404;
response.End();
}
};
}
public void Dispose() { }
}
<system.webServer>
<modules>
<add name="MimeMappingModule" type="WebApplication4.MimeMappingModule, WebApplication4"/>
</modules>
</system.webServer>