무작위, 만료, 암호가 필요하며 IIS 7.0과 관련된 C#의 특정 파일을 가리키는 보호 된 다운로드 링크를 만드는 방법이 있습니까?보호 된 링크 만들기
여러 개의 임의 링크가 동일한 파일에 링크 될 수 있습니다.
내장 코드 또는 제 3 자 라이브러리? 예를 들어
,이 작업을 수행하는 http://www.example.com/<some random gibberish>/<md5 of file>/file.jpg
무작위, 만료, 암호가 필요하며 IIS 7.0과 관련된 C#의 특정 파일을 가리키는 보호 된 다운로드 링크를 만드는 방법이 있습니까?보호 된 링크 만들기
여러 개의 임의 링크가 동일한 파일에 링크 될 수 있습니다.
내장 코드 또는 제 3 자 라이브러리? 예를 들어
,이 작업을 수행하는 http://www.example.com/<some random gibberish>/<md5 of file>/file.jpg
한 가지 방법은 GUID를 사용하는 것입니다. GUID는 충돌하지 않도록 설계되었으며,이 디자인은 유효한 GUID를 추측하는 데 어려움을 낳습니다. 나는 누군가가 이것이 매우 안전하지 않다고 말할 것입니다! 음, 암호로도 보호하고 있습니다. C#에서 GUID를 생성하는 것은 꽤 쉽습니다.
내가 원하는 것은 이러한 방식으로 보호하려는 파일을 먼저 처리하는 방법이고 둘째는 주어진 경로의 요청에 응답하고 경로의 GUID를 검사하여 해당 경로가 있는지 확인하는 처리기입니다. 유효한.
URL에 해당하는 GUID 목록, 암호 (암호화 된 것이 바람직 함) 및 만료 날짜를 유지하려면 데이터베이스 백 엔드가 필요합니다. 핸들러는 요청 된 URL/GUID에 대한 항목을 검사하여 링크가 만료되었는지 확인한 다음 사용자에게 비밀번호를 쉽게 입력 할 수있는 프롬프트를 표시하고 비밀번호를 데이터베이스에 저장된 암호로 확인합니다.
이 GUID를 생성하려면, 당신이 원하는 :<modules>
<add name="MyDownloadModule" type="Example.MyDownloadModule, Example"/>
</modules>
:
System.Guid.NewGuid().ToString()
당신과 같이 당신의 Web.config에 항목을 추가 할 수 있습니다 (IIS7에 대한) 모든 요청하기 전에 호출되는 모듈을 만들려면
여기서 MyDownloadModule은 Example 네임 스페이스에 처리기를 포함하는 클래스입니다. 그런 다음 IHttpModule 인터페이스를 구현해야 그 클래스 내부
, 특히 오버라이드 (override) 방법 :public string ModuleName {
get { return "MyDownloadModule"; }
}
public void Init(HttpApplication app) {
// Add an event handle which is called at the beginning of each request
app.BeginRequest += new EventHandler(this.AppBeginRequest);
}
//
// Our event handler for the BeginRequest event
//
private void AppBeginRequest(Object source, EventArgs e)
{
HttpRequest request = app.Context.Request;
//
// Is this a file download?
//
if (request.AppRelativeCurrentExecutionFilePath == "~/downloads") // or whatever
{
// this is where you work your GUID inspecting magic
}
}
그것에 대해 이런 식으로 가서는 할 수있다,이 서버에 모든 요청에 대해 호출됩니다 의미 네가 원하는대로되지 말라.
사용자는 항상 고유 한 HttpHandler를 만든 다음 고유 한 만료/유효성 검사 코드를 구현할 수 있습니다. 같은
뭔가?
http://www.example.com/download?token={your_token}
그런 다음 요청 절편 핸들러가 디스크에서 파일을 잡은 토큰 쿼리 문자열 값이 올 경우 클라이언트에 전달하기 위해 사소한 문제가 될 것입니다.
IHttpHandler 인터페이스에 대한 자세한 내용은 MSDN http://msdn.microsoft.com/en-us/library/system.web.ihttphandler.aspx
을 참조하십시오.