설명
SQL Server 클라이언트가 전체 통신의 암호화를 요구하지 않거나 서버 인증서 검증을 생략하면 데이터베이스 트래픽이 네트워크 공격자에게 노출될 수 있습니다. Encrypt=False여도 서버가 암호화를 강제할 수 있으므로, 실제 보호 수준은 서버 설정과 드라이버 버전도 함께 확인해야 합니다.
잠재적 영향
- 데이터베이스 인증 정보와 쿼리 결과가 중간자 공격으로 노출되거나 변조될 수 있습니다.
해결 방법
Encrypt=true를 사용하고 서버 인증서를 검증합니다. 임시 개발 환경을 제외하고 Encrypt=false 또는 TrustServerCertificate=true를 사용하지 않습니다.
예시
변경 전
csharp
using var connection = new SqlConnection(
"Server=db;Database=App;Encrypt=False");
변경 후
csharp
using var connection = new SqlConnection(
"Server=db;Database=App;Encrypt=True;TrustServerCertificate=False");
설명:
- 변경 전:
Encrypt=False는 클라이언트가 전체 통신의 암호화를 요구하지 않는 설정입니다. 서버의 강제 암호화 설정과 드라이버에 따라 실제 연결 보호가 달라집니다. - 변경 후: Encrypt=false 또는 TrustServerCertificate=true를 설정하지 말고 암호화된 SQL 연결을 요구하고 서버 인증서를 검증하세요.