>  기사  >  운영 및 유지보수  >  Nginx가 XML 주입 공격으로부터 보호하는 방법

Nginx가 XML 주입 공격으로부터 보호하는 방법

王林
王林원래의
2023-06-11 08:20:161751검색

XML 주입 공격은 공격자가 악의적으로 주입된 XML 코드를 애플리케이션에 전달하여 무단 액세스를 얻거나 악의적인 작업을 수행하는 일반적인 네트워크 공격 방법입니다. Nginx는 다양한 방법으로 XML 주입 공격으로부터 보호할 수 있는 인기 있는 웹 서버이자 역방향 프록시 서버입니다.

  1. 입력 필터링 및 검증

XML 입력을 포함하여 서버에 입력되는 모든 데이터는 필터링되고 검증되어야 합니다. Nginx는 요청을 백엔드 서비스로 프록시하기 전에 요청을 확인할 수 있는 몇 가지 기본 제공 모듈을 제공합니다. 모듈 중 하나는 내장된 Lua 언어 지원을 제공하고 요청의 다양한 단계에서 실행할 사용자 정의 요청 확인 스크립트를 작성할 수 있는 ngx_http_lua_module입니다. 예를 들어 액세스 단계에서 Lua 코드를 사용하여 입력을 검사하여 악성 XML 코드를 식별할 수 있습니다.

  1. XEE(XML 외부 엔터티) 필터 활성화

XML 외부 엔터티(XEE) 취약점은 널리 퍼져 있으며 공격자가 특별히 제작된 XML 페이로드를 보내고 XEE 취약점을 악용하여 서버에서 중요한 정보를 얻거나 공격을 수행할 수 있습니다. Nginx는 이러한 유형의 공격을 방지하기 위해 XEE 필터를 활성화하는 데 사용할 수 있는 ngx_http_xml_module이라는 내장 모듈을 제공합니다. 이 모듈은 요청을 백엔드 서비스로 프록시하기 전에 XML 문서의 외부 엔터티를 확인하고 문제가 발견되면 요청을 삭제할 수 있습니다. 다음 지시문을 사용하여 XEE 필터링을 활성화할 수 있습니다.

xml_parser on;
xml_entities on;
  1. 알 수 없는 XML 문서 유형 거부

공격자는 서버 측 파서의 취약점을 악용하기 위해 잠재적으로 알 수 없는 XML 문서 유형을 서버에 보낼 수 있습니다. 이러한 유형의 공격을 방지하려면 다음 지시문을 사용하여 허용할 XML 문서 유형을 지정할 수 있습니다.

xml_known_document_types application/xml application/xhtml+xml image/svg+xml text/xml text/html;

기본적으로 Nginx는 application/xml 및 text/xml 유형의 XML 문서만 허용하며 다른 모든 유형은 거부됩니다.

  1. XML 요청 크기 제한

공격자가 대량의 XML 데이터를 전송하면 서버에 성능 문제가 발생하거나 충돌이 발생할 수 있습니다. 이런 일이 발생하지 않도록 하려면 HTTP 요청의 최대 크기를 설정하여 XML 크기를 제한해야 합니다. XML 요청의 최대 크기는 다음 지시어를 사용하여 설정할 수 있습니다:

client_max_body_size 1m;

이렇게 하면 XML 요청의 최대 크기가 1MB로 제한됩니다.

  1. 로그 파일 검토

로그의 요청을 검토하면 가능한 공격을 적시에 감지하고 적절한 조치를 취하는 데 도움이 될 수 있습니다. Nginx는 요청된 정보를 로그 파일에 기록할 수 있는 ngx_http_log_module이라는 내장 모듈을 제공합니다. 다음 명령을 사용하여 로깅 모듈을 활성화할 수 있습니다.

access_log /var/log/nginx/access.log;

Conclusion

Nginx는 다양한 방법으로 XML 주입 공격으로부터 보호할 수 있는 인기 있는 웹 서버이자 역방향 프록시 서버입니다. 보안 취약점의 위험을 줄이기 위해 Nginx를 적용할 때 위의 예방 조치를 취하는 것이 좋습니다.

위 내용은 Nginx가 XML 주입 공격으로부터 보호하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.