(aurelia) 응용 프로그램의 업로드 폴더를 여는 dotnet core API (IIS8에서)를 설정했습니다. 나는 응용 프로그램이 URL을 통해 응용 프로그램에서 업로드 된 이미지를 열 수있는이 잘 작동이Dotnet core : 브라우저를 통해 이미지에 대한 직접 액세스를 차단하는 가장 좋은 방법은 무엇입니까?
app.UseFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(Configuration["ApiSettings:UploadsFolder"]),
RequestPath = new PathString("/uploads/"),
EnableDirectoryBrowsing = true
});
처럼 해당 폴더에 대한 액세스 권한을 열었습니다. 이제 URL을 브라우저에 직접 입력하면 해당 이미지에 대한 액세스를 차단하고 싶습니다. C# 솔루션을 보았지만 dotnet 코어 솔루션을 찾을 수 없었습니다.
저는 미들웨어를 사용하여 API로 전송되는 요청을 가로 채고 있습니다. 그러나 브라우저를 통해 특정 이미지 요청을 가로 채서 차단할 수는 없습니다. 이미지에 액세스 할 수있는 유일한 것은 고정 된 도메인에서 내 aurelia 응용 프로그램이어야합니다.
public async Task Invoke(HttpContext context)
{
StringValues referer;
context.Request.Headers.TryGetValue("Referer", out referer);
// Referer will contain the full URL of the image when requested
// via the browser. When its requested differently it will contain
// the url of the requesting application
if (referer.Any() && referer.First().Contains("/uploads/"))
{
context.Response.StatusCode = 401;
return;
}
await _next.Invoke(context);
}
이미지에 대한 직접 액세스를 차단하고 이미지를로드하는 것이 가장 좋은 방법은 누구에게 말해 줄 수 있습니까?
답장을 보내 주셔서 감사합니다. 그래서 '정적 파일을 제거하는 동안'당신은 'UseFileServer'을 제거한다고 말합니까? 그렇다면 더 이상 업로드 폴더를 사용할 수 없습니까? 브라우저에서 직접 if (if 문은 if 문을 호출하고 401을 반환하지만 브라우저에서는 여전히 이미지를 표시 함) 직접 호출합니다. –
아니요, 서버에 IIS (inetmgr)로 들어가거나 (dev에있는 경우 로컬로) 웹 사이트로 이동하여 "모듈"을 선택하고 "StaticFileModule"을 제거하십시오. 모두 GUI를 통해. –
좋아요, 제가 할 수는 있지만 로컬로 (dotnet cli를 통해) 내 미들웨어를 공격하지만 여전히 요청을 차단할 수는 없습니다. 왜 그런지 알기나 해? –