윈도우 이벤트ID 1309, 클라이언트에서 잠재적 위험이 있는 request.path 값을 발견했습니다
Windows 이벤트 ID 1309에서 “클라이언트에서 잠재적 위험이 있는 request.path 값을 발견했습니다” 오류는 ASP.NET에서 보안 정책에 의해 특정 URL 요청이 차단될 때 발생합니다.
이 오류는 일반적으로 다음과 같은 이유로 발생합니다:
• URL에 특수 문자가 포함됨 (예: <, >, %, :, &, ?, " 등)
• 요청된 경로(Request Path)가 ASP.NET의 요청 유효성 검사(Request Validation)에 의해 차단됨
• 웹 애플리케이션이 URL 인코딩이 잘못된 요청을 받음
• 악의적인 XSS(크로스 사이트 스크립팅) 또는 SQL 인젝션 공격 시도
1. 이벤트 로그에서 오류 확인
① 이벤트 로그(Event Viewer)에서 확인
1. Win + R → eventvwr.msc 입력 → Enter
2. Windows 로그 → 응용 프로그램(Application)
3. 이벤트 ID 1309 검색
4. 오류 메시지에서 Request Path 값을 확인
2. 주요 해결 방법
① URL 스캐닝 예외 처리 (Request Path Validation 비활성화)
ASP.NET은 기본적으로 요청된 URL에 특수 문자가 포함되면 차단합니다.
이 기능을 비활성화하려면 web.config에서 다음 설정을 추가하세요.
1) .NET Framework 기반 프로젝트
web.config에서 다음을 추가:
<configuration>
<system.web>
<httpRuntime requestPathInvalidCharacters="" />
</system.web>
</configuration>
이렇게 하면 ASP.NET의 기본 특수 문자 필터링이 해제됩니다.
2) .NET Core 기반 프로젝트
.cs 파일에서 Request Filtering Middleware 설정:
app.Use(async (context, next) =>
{
context.Features.Get<IHttpRequestFeature>().RawTarget = context.Request.Path;
await next();
});
⚠️ 보안상 위험이 있으므로 신중히 적용해야 합니다.
② IIS에서 URL 필터링 예외 처리
IIS에서 특정 URL 패턴이 차단될 수도 있습니다.
IIS 설정을 변경하려면:
1. IIS 관리자 열기 (inetmgr)
2. 좌측에서 웹사이트 선택 → 요청 필터링(Request Filtering) 클릭
3. 편집(Edit Feature Settings) → “Allow double escaping” 옵션 체크
4. web.config에서 설정 변경:
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
이렇게 하면 URL의 특수 문자가 차단되지 않습니다.
③ 웹 애플리케이션에서 허용 가능한 URL 확인 및 수정
• 클라이언트에서 의도하지 않은 특수 문자가 포함된 URL 요청을 보내고 있을 수 있음
• 웹 애플리케이션에서 URL을 인코딩하여 전송
string safeUrl = HttpUtility.UrlEncode(userInput);
• RequestValidationMode="2.0" 설정으로 유효성 검사 변경 가능:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
⚠️ 보안 취약점이 발생할 수 있으므로 신중하게 적용해야 함
3. 추가 조치 및 보안 고려 사항
✅ XSS 및 SQL Injection 공격 여부 확인
✅ 로그에서 차단된 Request Path(URL) 분석
✅ 웹 애플리케이션 코드에서 입력값 검증(Validation) 적용
✅ 최소한의 예외 처리만 적용하여 보안 유지