ASP.NET을 사용하여 중요한 정보 저장
업데이트: 2007년 11월
ASP.NET 응용 프로그램에서 아주 중요한 정보를 사용해야 하는 경우가 많습니다. 예를 들어, 데이터베이스에 연결하기 위해 사용자 ID와 암호를 사용해야 하거나 고객이 응용 프로그램에 액세스하는 데 사용할 사용자 ID와 암호를 저장할 수 있습니다. SSL(Secure Sockets Layer)을 사용하여 네트워크를 통해 전달되는 정보를 암호화할 수 있지만, 이 정보를 서버와 클라이언트 모두에서 저장할 때에도 보호해야 합니다. 이 항목에서는 중요한 정보를 저장하기 위한 일반적인 지침 몇 가지를 설명합니다.
참고: |
---|
중요한 정보를 저장하는 방법에 대한 자세한 내용은 MSDN 웹 사이트의 Improving Web Application Security: Threats and Countermeasures를 참조하십시오. |
가능하면 중요한 정보를 저장하지 않음
응용 프로그램에서 중요한 정보를 노출하지 않는 가장 좋은 방법은 이 정보를 저장하지 않는 것입니다. 중요한 정보를 저장하는 위치를 최소화합니다. 브라우저에서 유지되는 쿠키나 컨트롤에 중요한 응용 프로그램 정보가 저장되지 않도록 합니다. 이렇게 되면 중요한 정보가 응용 프로그램의 클라이언트에 노출됩니다. 중요한 정보를 응용 프로그램 논리에 저장하지 마십시오. 대신, 안전한 구성 위치나 클라이언트에서 중요한 정보를 검색합니다.
중요한 정보 암호화
중요한 정보를 저장할 경우에는 사용자가 이해할 수 있는 텍스트나 Base64 인코딩처럼 쉽게 디코딩된 형식으로 저장하지 마십시오. 대신, 설령 공격자에게 정보가 노출되더라도 공격자가 중요한 정보의 내용을 쉽게 확인할 수 없도록 정보를 암호화합니다.
중요한 정보를 확인만 할 뿐 사람이 이해할 수 있는 형식으로 해독할 필요가 없다면 단방향 해시를 사용하여 중요한 정보를 암호화합니다. 그런 다음 유효성이 검사되는 소스에서 받은 중요한 정보를 비교할 때 수신한 값을 해시하고 해시를 비교하여 유효성을 검사합니다. 예를 들어, ASP.NET 멤버 자격 및 폼 인증을 사용하여 응용 프로그램의 사용자 인증을 제공할 경우에는 암호가 데이터 소스에 저장되거나 유효성 검사를 위해 비교될 때 단방향 해시를 사용하여 암호화되도록 암호 형식을 Hashed로 설정합니다.
연결 문자열, 사용자 자격 증명 및 암호화 키와 같은 중요한 정보를 응용 프로그램의 Web.config 파일에 저장할 경우에는 보호되는 구성 공급자를 사용하여 Web.config 파일의 중요한 섹션을 암호화합니다. 보호되는 구성에 대한 자세한 내용은 보호되는 구성을 사용하여 구성 정보 암호화를 참조하십시오.
암호화를 사용하여 중요한 정보를 보호하는 방법에 대한 자세한 내용은 .NET Framework 암호화 모델을 참조하십시오.
권한을 사용하여 중요한 정보 보호
중요한 정보를 파일, 데이터베이스, 레지스트리 또는 기타 위치에 저장할 때는 NTFS 액세스 제어 목록과 데이터베이스 권한을 사용하여 필요한 소스 및 액세스로만 정보 액세스를 제한합니다. 자세한 내용은 데이터베이스 설명서나 ASP.NET 필수 ACL(액세스 제어 목록)을 참조하십시오.