JavaEE에는 몇 가지 멋진 내장 보안 메커니즘이 있지만, 적용 범위 XSS(교차 사이트 스크립팅), SQL 주입, CSRF(교차 사이트 요청 위조) 및 XML외부 엔터티(XXE)와 같은 많은 일반적인 공격은 다루지 않습니다. 웹 애플리케이션과 웹 서비스가 이러한 공격에 노출되는 것을 방지하는 것은 가능하지만, 이를 위해서는 어느 정도의 작업과 테스트가 필요합니다. 다행스럽게도 Open Web Application Security Project(OWASP)에서는 "가장 중요한 10가지 위험". "웹 애플리케이션 보안 위험" 보고서.
이러한 주요 위험이 Java EE 웹 애플리케이션 및 웹 서비스에 어떻게 적용되는지 살펴보겠습니다.
개발자가 request.getParameter(), request.getCookie() 또는 request.getHeader()와 같은 신뢰할 수 없는 정보를 얻을 때 주입이 발생합니다. ) 및 명령 인터페이스에서 언제든지 사용하세요. 예를 들어 "SELECT * FROM users WHERE username='" + request.getParameter("user") + "'와 같은 일반 SQL 쿼리에 신뢰할 수 없는 데이터를 연결할 때 SQL 주입이 발생합니다. AND passw ord='" + request.getParameter("pass") = "'"일 때 발생합니다. 개발자는 공격자가 쿼리의 의미를 변경하고 데이터베이스 호스트를 장악하는 것을 방지하기 위해 preparedStatement를 사용해야 합니다. Command 주입, LDAP 주입, Expression Language(EL) 주입 등 다양한 주입 유형이 있는데 모두 매우 위험하므로 이러한 인터프리터에 데이터를 보낼 때 각별히 주의하세요
JavaEE는 인증 및 세션 관리를 지원하지만 여기서는 잘못될 수 있는 일이 많습니다. 인증된 모든 트래픽이 SSL을 통과하는지 확인해야 합니다. JSESSIONID를 노출하면 사용자가 모르는 사이에 사용자 세션을 가로채는 데 사용될 수 있습니다. 세션 고정 공격을 방지하려면 사용자가 인증할 때 JSESSIONID를 회전해야 합니다. 사용자의 JSESSIONID를 URL에 추가하므로 공개나 도난에 더 취약해집니다.
XSS는 JavaEE 개발자가 HTTP 요청에서 신뢰할 수 없는 정보를 얻어 인코딩 시 적절한 컨텍스트 출력 없이 이를 HTTP 응답에 넣을 때 발생합니다. 공격자는 이 행동을 악용하여 웹사이트에 스크립트를 삽입한 다음 세션을 하이재킹하고 데이터를 훔칠 수 있습니다. 이러한 공격을 방지하려면 개발자는 민감한 컨텍스트 출력 인코딩을 수행해야 합니다. 데이터를 HTML로 변환하는 경우 x; 형식을 사용하세요. 다양한 문자가 있으면 대괄호가 없는 속성이 종료되므로 HTML 속성을 괄호로 묶어야 합니다. JavaScript, URL, CSS에 신뢰할 수 없는 데이터를 넣은 경우 각각에 대해 적절한 이스케이프 방법을 사용해야 합니다. 그리고 HTML 속성 내에서 Javascript로 작성된 URL과 같은 중첩된 컨텍스트를 처리할 때는 매우 주의해야 합니다. OWASP ESAPI와 같은 코딩 라이브러리에 도움을 줄 수 있습니다.
애플리케이션이 데이터베이스 키, 파일 이름 또는 해시 맵과 같은 내부 식별자를 노출할 때마다 🎜>index, 공격자는 이러한 식별자를 조작하여 승인되지 않은 데이터에 액세스하려고 시도할 수 있습니다. 예를 들어, HTTP 요청에서 Java 파일 생성자로 신뢰할 수 없는 데이터를 전달하는 경우 공격자는 "../" 또는 널 바이트 공격을 사용하여 유효성 검사를 속일 수 있습니다. 이러한 유형의 공격을 방지하려면 데이터에 대한 간접 참조를 사용하는 것을 고려해야 합니다. ESAPI 라이브러리는 이러한 간접 참조를 용이하게 하는 ReferenceMap을 지원합니다.
최신 JavaEE 애플리케이션과 Struts 및 Spring과 같은 프레임워크에는 보안 설정이 많습니다. 보안 설정을 살펴보고 원하는 방식으로 설정했는지 확인하세요. 예를 들어,
제때 라이브러리를 업데이트하는 것입니다. 매일 새로운 취약점이 공개되므로 단일 검사만 실행하지 마십시오.
10. 검증되지 않은 리디렉션 및 전달 응답 .sendRedirect()를 호출할 때 애플리케이션이 request.getParameter() 또는 request.getCookie()와 같은 신뢰할 수 없는 데이터를 사용할 때마다 공격자는 다음을 수행할 수 있습니다. 악성코드를 이러한 문제에 계속해서 관심을 기울여야 합니다. 새로운 공격과 취약점이 계속해서 발견되고 있습니다. 이상적으로는 보안 검사를 기존 빌드, 테스트 및 배포 프로세스에 통합할 수 있습니다. 애플리케이션에서 이러한 문제를 확인하려면Eclipse용 무료 Contrast 플러그인을 사용해 보세요. 이는 단순한 정적 분석 도구가 아닙니다. 대신 C4E는 Java 계측 API를 활용하여 애플리케이션의 보안과 관련된 모든 것을 모니터링합니다. C4E는 실시간으로 완전한 데이터 흐름 분석도 수행할 수 있으므로 복잡한 애플리케이션을 통해 요청에서 데이터를 추적할 수 있습니다. 예를 들어, 코드가 매개변수 값을 취하고, 이를 base64로 디코딩하고, 이를 맵에 저장하고, 맵을 데이터 bean에 넣고, JSP의 세션 속성에 bean을 저장한다고 가정합니다. 값을 입력하고 EL을 사용하여 이 값을 웹페이지에 삽입합니다. Contrast for Eclipse는 이 데이터를 추적하고 XSS 취약점을 보고할 수 있습니다. 복잡한 프레임워크와 라이브러리를 사용하는 경우에도 마찬가지입니다. 다른 어떤 도구도 이 속도, 정확성 및 사용 편의성을 따라올 수 없습니다.
Eclipse Marketplace에서 Contrast for Eclipse를 찾을 수 있습니다. 그런 다음 서버 탭 "대비로 시작"으로 이동하면 나머지 작업이 자동으로 수행됩니다.위 내용은 Java EE에 누락된 가장 중요한 10가지 보안 제어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!