CAFE

ASP.NET

[23기 김용운] Web.config 기술문서

작성자23기 김용운|작성시간12.04.04|조회수581 목록 댓글 0


Web.config 기술문서

작성일 : 2012. 04. 04

작성자 : 김용운

 

 

.config 파일의 계층 구조

 .NET Framework .config 파일을 사용하여 구성 옵션을 정의합니다. .config 파일은 텍스트 기반 XML 파일입니다. 여러 .config 파일은 단일 시스템에 있을 수 있으며 대개 그렇습니다.

 

 .NET Framework의 시스템 단위 구성 설정은 Machine.config 파일에서 정의됩니다. Machine.config 파일은 %SystemRoot%\Microsoft.NET\Framework\%VersionNumber%\CONFIG\ 폴더에 있습니다.
Machine.config
파일에 포함된 기본 설정은 전체 시스템에 있는 .NET 응용 프로그램의 동작에 영향을 미치도록 수정될 수 있습니다.

 

 응용 프로그램의 루트 폴더에서 Web.config 파일을 만들면 단일 응용 프로그램의 ASP.NET 구성 설정을 변경할 수 있습니다. 이렇게 하면 Web.config 파일의 설정이 Machine.config 파일의 설정을 덮어씁니다.

 

Web.config 파일 만들기

 메모장과 같은 텍스트 편집기를 사용하여 Web.config 파일을 만들 수 있습니다. ASP.NET 응용 프로그램의 루트 디렉터리에서 Web.config라는 텍스트 파일을 만들어야 합니다. Web.config 파일은 잘 구성된 XML 문서이어야 하고 %SystemRoot%\Microsoft.NET\Framework\%VersionNumber%\CONFIG\Machine.config 파일과 유사한 형식이어야 합니다.

 Web.config
파일은 Machine.config 파일의 설정을 덮어쓰는 구성 항목에 대한 항목만 포함해야 합니다. 최소한 Web.config 파일에는 <configuration> 요소와 <system.web> 요소가 있어야 합니다. 이러한 요소는 개별 구성 요소를 포함합니다. 

 
다음 예제는 최소한의 항목만 포함한 Web.config 파일을 보여 줍니다.

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <system.web>

 

  </system.web>

</configuration>

 Web.config 파일의 첫 번째 줄에서는 문서가 XML 형식임을 설명하고 문자 인코딩 유형을 지정합니다. 첫 번째 줄은 모든 .config 파일에서 동일해야 합니다. 

 
다음에 오는 줄은 Web.config 파일의 <configuration> 요소와 <system.web> 요소의 시작과 끝을 표시합니다. 줄 자체가 작업을 하지는 않습니다. 그러나 이 줄에서는 앞으로의 구성 설정을 추가할 수 있는 구조를 제공합니다. 대부분의 ASP.NET 구성 설정은 <system.web> </system.web> 줄 사이에 추가합니다. 이 줄은 ASP.NET 구성 설정의 시작과 끝을 표시합니다.

 

Reference : MSDN

 

ASP.NET 으로 웹사이트 구축시
일반적으로 연결스트링등의 주요 변수들은 web.config 에 입력하여 사용합니다.

그런데 web.config 파일은 보통 암호화가 되어 있지않기 때문에 누군가가 마음만 먹고 web.config 파일을
가져간다면 DB의 사용자ID, 암호, 해당IP 등의 주요정보를 가로채서 해킹시도를 할 우려가 있습니다.

MS
에서는 이러한 web.config 에 대해 편리한 방식으로 암호화를 시켜주는 기능을 제공하고 있습니다.

 

암호화, 복호화

아래의 명령어를 프롬프트창(실행에서 cmd 하면 나오는 도스창)에서 실행시킵니다.
aspnet_regiis
파일을 찾을 수 없다고 나온다면

C:\windows\Microsoft.NET\Framework\v2.0.50727  
로 이동한 후 아래명령을 실행해 줍니다.

<암호화>
aspnet_regiis -pef "connectionStrings"  [web.config
가 있는 디렉토리 예) d:\MyHome]
aspnet_regiis -pef "system.web/machineKey" [web.config
가 있는 디렉토리 예) d:\MyHome]



<복호화>
aspnet_regiis -pdf "connectionStrings"  [web.config
가 있는 디렉토리 예) d:\MyHome]
aspnet_regiis -pdf "system.web/machineKey" [web.config
가 있는 디렉토리 예) d:\MyHome]

 

암호화는 해당 컴퓨터의 OS에 활당되어져 있는 머신키(Machine Key) 에 의해 RSA 방식으로 생성 됩니다. 그러므로 다른 컴퓨터에서는 복호화가 불가능 하지만, 머신키에 의해 암호화 되어있는 만큼 똑같은 머신키를 복제하여 복호화 하고자 하는 컴퓨터에서 암호키를 입력해주고 복호화를 해주면 원상태의 값으로 돌아가게 됩니다.

 

'RsaProtectedConfigurationProvider' 공급자를 사용하여 'connectionStrings' 섹션을 암호화하지 못했습니다. 공급자의 오류메시지 : 개체가 이미 있습니다.

 

 와 같은 에러 메세지를 받는다면 cmd, 도스명령어창을 관리자권한으로 실행한 후 위의 암호화 명령을 입력하면 암호화가 성공했다는 메세지를 볼 수 있습니다.

 

Reference : 윤귀의 우주속 티끌



첨부파일 Web.Config 기술문서 date 2012.04.04.docx


다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼