2012-12-17 2 views
-2

사용자 정보를 가져 오는 웹 양식이 있습니다. 다양한 텍스트 상자의 값은 html 파일을 작성하는 데 사용됩니다. 이 html을 특정 이름의 파일에 쓴 다음이 파일을 저장하라는 메시지를 표시합니다.이 html은 Outlook 전자 메일 서명을 만드는 데 사용됩니다. 현재 나는 응용 프로그램 내 에서이 HTML을 가지고 있습니다. 이것은 서버에 배포되었습니다. 이 파일에 대한 쓰기 권한을 모든 사용자가 작동하도록 설정해야했습니다.ASP.NET 4.0의 파일에 동적으로 작성된 HTML 쓰기

보안 위험이 있습니까? 여러 사용자가이 응용 프로그램에 액세스하여 동시에 파일에 쓸 경우 어떻게됩니까?

+0

관련 코드를 표시하십시오! – GameScripting

답변

0

파일에 "특정 이름"이 있다고하면 그 이름이 항상 같은 이름입니까? 그렇다면 다중 사용자가이 기능을 동시에 사용하면 문제가 발생합니다. 그들은 한 파일을 덮어 쓰고 서로의 데이터를 다운로드 할 것입니다. 이를 피하기 위해 프로세스가 실행될 때마다 고유 한 파일 이름을 생성해야합니다.

하지만 파일을 실제로 저장해야합니까?

또는 사용자가 다운로드 할 수 있도록 일부 HTML을 제작하려는 귀하의 목표는 파일에 쓰는 방법과 파일을 다운로드하라는 것입니다.

파일을 저장할 필요가 없지만 HTML을 생성하고 저장할 것인지 묻는 메시지를 일반 페이지로 제공하고 브라우저에서 다운로드하도록 응답 헤더를 설정하면됩니다. 이 라인을 따라 뭔가 : 내가 이해에서

Response.AddHeader("content-disposition", "attachment;filename=my_file.html"); 
+0

예, 파일의 이름은 같습니다. 나는 실제로 파일을 저장할 필요가 없다. html 파일은 전자 메일 서명으로 사용하기 위해 적절한 형식을 가져야합니다. 그 이유는 입력을 기반으로 HTML 문자열을 만들고 파일에 쓰는 이유입니다. – user1910999

+0

현재 코드는 - Note : Email_sig.html 파일에 html을 작성하고 작성했습니다. – user1910999

0

, 사용자는 웹 양식을 채우고 제출합니다. 즉시, html 파일이 서버에서 다운로드를 위해 팝업됩니다. 나는 이것이이 시나리오의 매우 깔끔한 구현이라고 생각한다. 파일 잠금을 방지하기 위해 리소스가 올바르게 릴리스되었는지 확인해야합니다.

여러 명의 사용자가이 응용 프로그램에 액세스 할 때 별도의 파일이 특정 이름으로 만들어지기 때문에 중단해서는 안됩니다. 고유 한 이름을 만들 때 어떤 논리가 사용되었는지는 알지 못합니다. 특정 상황에서 계산 된 특정 파일 이름이 기존 파일과 비슷하게되면 동일한 파일 이름의 다른 버전을 바꾸거나 작성하는 코드가 있어야합니다 (이름 계산 논리에만 의존적 임). 스트림/파일 객체를 삭제하지 않고 웹 양식의 캡쳐 된 데이터를 동일한 파일에 반복해서 쓰는 경우 잠금이 발생할 수 있습니다. 코드에서 사용 후 개체를 폐기해야합니다.

모든 사람에게 쓰기 액세스 권한을 부여하는 대신 해당 파일/폴더에 대한 쓰기 권한이있는 사용자에게 웹 응용 프로그램의 응용 프로그램 풀에 대한 액세스 권한을 부여하는 것이 좋습니다. 이러한 방식으로, 응용 프로그램은 권한이있는 사용자가 아닌 쓰기 작업을 수행 할 수있는 모든 권한을 갖습니다. 사용자가 파일/폴더에 대한 쓰기 권한이있는 경우 누구나 들여다보고 예기치 않은 일을하는 것은 매우 쉽습니다.

희망이 도움이됩니다.

+0

@ Carson63000 - 내가하는 일 -'String FileName = Server.MapPath ("Email_SIG.html"); 문자열 FilePath = Server.MapPath ("Email_SIG.html"); String sPath = Path.GetFileName (FilePath); System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; response.ClearContent(); 응답.명확한(); response.ContentType = "text/html"; response.AddHeader ("Content-Disposition", "attachment; filename ="+ sPath + ";"); response.WriteFile (sPath); response.Flush(); response.End();' – user1910999

관련 문제