XML 주입 공격은 공격자가 악의적으로 주입된 XML 코드를 애플리케이션에 전달하여 무단 액세스를 얻거나 악의적인 작업을 수행하는 일반적인 네트워크 공격 방법입니다. Nginx는 다양한 방법으로 XML 주입 공격으로부터 보호할 수 있는 인기 있는 웹 서버이자 역방향 프록시 서버입니다.
XML 입력을 포함하여 서버에 입력되는 모든 데이터는 필터링되고 검증되어야 합니다. Nginx는 요청을 백엔드 서비스로 프록시하기 전에 요청을 확인할 수 있는 몇 가지 기본 제공 모듈을 제공합니다. 모듈 중 하나는 내장된 Lua 언어 지원을 제공하고 요청의 다양한 단계에서 실행할 사용자 정의 요청 확인 스크립트를 작성할 수 있는 ngx_http_lua_module입니다. 예를 들어 액세스 단계에서 Lua 코드를 사용하여 입력을 검사하여 악성 XML 코드를 식별할 수 있습니다.
XML 외부 엔터티(XEE) 취약점은 널리 퍼져 있으며 공격자가 특별히 제작된 XML 페이로드를 보내고 XEE 취약점을 악용하여 서버에서 중요한 정보를 얻거나 공격을 수행할 수 있습니다. Nginx는 이러한 유형의 공격을 방지하기 위해 XEE 필터를 활성화하는 데 사용할 수 있는 ngx_http_xml_module이라는 내장 모듈을 제공합니다. 이 모듈은 요청을 백엔드 서비스로 프록시하기 전에 XML 문서의 외부 엔터티를 확인하고 문제가 발견되면 요청을 삭제할 수 있습니다. 다음 지시문을 사용하여 XEE 필터링을 활성화할 수 있습니다.
xml_parser on; xml_entities on;
공격자는 서버 측 파서의 취약점을 악용하기 위해 잠재적으로 알 수 없는 XML 문서 유형을 서버에 보낼 수 있습니다. 이러한 유형의 공격을 방지하려면 다음 지시문을 사용하여 허용할 XML 문서 유형을 지정할 수 있습니다.
xml_known_document_types application/xml application/xhtml+xml image/svg+xml text/xml text/html;
기본적으로 Nginx는 application/xml 및 text/xml 유형의 XML 문서만 허용하며 다른 모든 유형은 거부됩니다.
공격자가 대량의 XML 데이터를 전송하면 서버에 성능 문제가 발생하거나 충돌이 발생할 수 있습니다. 이런 일이 발생하지 않도록 하려면 HTTP 요청의 최대 크기를 설정하여 XML 크기를 제한해야 합니다. XML 요청의 최대 크기는 다음 지시어를 사용하여 설정할 수 있습니다:
client_max_body_size 1m;
이렇게 하면 XML 요청의 최대 크기가 1MB로 제한됩니다.
로그의 요청을 검토하면 가능한 공격을 적시에 감지하고 적절한 조치를 취하는 데 도움이 될 수 있습니다. Nginx는 요청된 정보를 로그 파일에 기록할 수 있는 ngx_http_log_module이라는 내장 모듈을 제공합니다. 다음 명령을 사용하여 로깅 모듈을 활성화할 수 있습니다.
access_log /var/log/nginx/access.log;
Conclusion
Nginx는 다양한 방법으로 XML 주입 공격으로부터 보호할 수 있는 인기 있는 웹 서버이자 역방향 프록시 서버입니다. 보안 취약점의 위험을 줄이기 위해 Nginx를 적용할 때 위의 예방 조치를 취하는 것이 좋습니다.
위 내용은 Nginx가 XML 주입 공격으로부터 보호하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!