본문 바로가기

Language/Asp.net

[ASP.NET] ConnectionString 암호화/복호화 방법

 

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, 도스명령어창을 관리자권한으로 실행한 후 위의 암호화 명령을 입력하면 암호화가 성공했다는 아주 흐뭇한 메세지를 볼 수 있을 것이다,.

asp.net 2.0 SMTP 메일 보내기  ASP.NET / Develop 

2013.01.17. 15:57  수정  삭제

복사http://firstrokn.blog.me/40177708532

전용뷰어 보기

asp.net 2.0 SMTP 메일 보내기를 위하여 아래와 같은 순서로 진행되어져야 한다.

1. 우선 자신의 SMTP 가상 서버를 만들어야 한다.
 -  IIS(인터넷 정보 서비스)관리를 깔때 옵션으로 선택할 수 있다. 
 -  속성 -> 액세스 -> 릴레이에 "127.0.0.1"(로컬서버) 추가


2. System.Net.Mail 을 사용한다.
 -  System.Web.Mail 에서 System.Net.Mail으로 바뀌었다.(asp.net 2.0)
 -  MailMessage, SmtpClient 객체를 사용할 수 있게 해준다.
 -  StringBuilder객체(String 모아 담기 - 주로 메일의 본문 내용 담기에 사용)을 위하여 System.Text사용


3. StringBuilder 객체 생성후 정보를 모아 본문 내용을 만든다. 후에 String 변수에다가 ToString()으로 변환하여 담아둔다.
 - 그냥 해도 되지만 메일의 본문 내용을 깔끔하게 정리할 수 있게 된다.
 - Append()함수를 사용하여 문자를 연결시킨다.


4. MailMessage 객체 생성 (  MailMessage mail = new MailMessage();)
        
        mail.From = new MailAddress("보내는 메일 주소");
        mail.To.Add("받을 메일 주소");
        mail.Subject = 메일제목;
        mail.Body = 메일본문;
        mail.SubjectEncoding = System.Text.Encoding.Default;
        mail.BodyEncoding = System.Text.Encoding.Default;
        mail.IsBodyHtml = true; // HTML 형식 사용함


5. SmtpClient객체 생성 ( 메일 발송)

SmtpClient smtp = new SmtpClient("서버이름", 포트번호);
smtp.Credentials = new NetworkCredential("인증메일주소", "인증메일비번");
smtp.Send(보낼 내용);


<script src="http://neoblue.kr/plugin/CallBack_bootstrapper?&src=http://s1.daumcdn.net/cfs.tistory/v/0/blog/plugins/CallBack/callback&id=150&callbackId=neobluekr1508861&destDocId=callbacknestneobluekr1508861&host=http://neoblue.kr&float=left&random=314"></script>

출처: http://chany1995.tistory.com/173