노무현 대통령 배너


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' 섹션을 암호화하지 못했습니다. 공급자의 오류메시지 : 개체가 이미 있습니다.

와 같은 오류메시지를 받고 한참을 헤맨적이 있다. 이런 현상은 윈도7 등의 보안이 강화된 O/S 에서 나타나는듯하다(아직 더 확인된 바는 없다. 내가 지금 쓰고 있는데 윈7이라 그렇게 추측..)
이 때 cmd, 도스명령어창을 관리자권한으로 실행한 후 위의 암호화 명령을 입력하면 암호화가 성공했다는 아주 흐뭇한 메세지를 볼 수 있을 것이다,.
신고
Posted by 윤귀