背景
项目.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>