이 섹션에서는 다음 내용에 대해 설명합니다.
보안
데이터 소스는 다음과 같은 두 액세스 모드 중 하나로 작동할 수 있습니다.
-
기본값인 액세스 제한 모드에서는 데이터 소스가 데이터 소스가 있는 도메인과 동일한 도메인에서 발생한 요청만 처리합니다. 제한 모드는 교차 사이트 요청 위조 (XSRF) 공격을 방지하므로 무제한 액세스 모드보다 안전합니다. 데이터 소스 라이브러리는 서버 측에서 상태나 데이터를 변경하지 않고 데이터를 반환하기 위한 인터페이스만 제공하므로 데이터를 도용하려는 XSRF 공격만 가능합니다. 데이터를 도용하려는 시도로부터 데이터 소스를 안전하게 보호하려면 제한 모드를 쿠키 기반 인증과 함께 사용해야 합니다. 사용자를 인증하는 방법은 환경과 구현에 따라 다릅니다.
-
무제한 액세스 모드에서는 데이터 소스가 출처와 관계없이 모든 요청을 처리합니다. 무제한 모드로 실행되는 데이터 소스는 쿠키 기반 인증으로 보호할 수 있지만 데이터 소스는 XSRF 공격에 취약합니다. 데이터 소스 도메인 외부 웹페이지의 시각화에서 데이터 소스에 액세스해야 하는 경우 또는 데이터가 공개 도메인에 있으므로 보호할 필요가 없는 경우 무제한 모드를 사용하세요.
시각화 요청에서 JSON, CSV 또는 HTML의 응답 형식을 지정할 수 있습니다. 응답 형식은 데이터 소스가 데이터 테이블을 반환하는 형식을 결정합니다. CSV 및 HTML 형식은 XSRF 공격에 취약하지 않으므로 제한 모드에서도 다른 도메인에서 액세스할 수 있습니다.
무제한 모드를 지정하려면 다음과 같이 isRestrictedAccessMode()
를 재정의합니다.
@Override protected boolean isRestrictedAccessMode() { return false; }
편의상 라이브러리와 함께 제공되는 모든 예는 무제한 액세스 모드에서 실행됩니다.
오류 및 경고
유효한 데이터 테이블을 반환할 수 없거나 반환하는 것이 불가능하거나 바람직하지 않은 경우 라이브러리에서
DataSourceException
이 발생합니다. 예를 들어 사용자를 인증할 수 없는 경우입니다. 라이브러리에서는 오류로 인해 데이터 테이블을 만들지 못할 때 이러한 예외를 발생시킵니다. 데이터 소스에 고유한 상황에서 예외를 발생시키는 것이 좋습니다. 이 경우 DataSourceException
클래스에서 상속하여 자체 오류 예외 유형을 만드세요. DataSourceException
클래스를 직접 발생시킬 수도 있습니다.
DataSourceException
클래스는 base
패키지에 있으며 다음 매개변수를 사용합니다.
ReasonType
이 매개변수는 필수 항목입니다. 사용 가능한 이유 유형은ReasonType
enum에 정의되어 있습니다. 사용 가능한 이유 유형 중 적합한 것이 없다면Other
또는Internal
를 사용할 수 있습니다.
MessageToUser
이 매개변수는 오류 메시지의 텍스트를 정의합니다. 대부분의 경우 사용자에게 도움말로 표시되므로 기술 또는 기밀 정보를 포함하지 않는 것이 중요합니다.
datasource.DataSourceHelper
의 도우미 함수 집합을 사용하여 오류를 처리할 수 있습니다. 이 경우 이름이 같은 setErrorServletResponse
의 두 함수를 호출하여 DataSourceException
을 가져오고 데이터 서블릿 응답에 오류를 설정합니다. 이러한 함수 중 하나는 데이터 소스 요청을 사용하고 다른 함수는 HttpServlet request
를 사용하며 DataSourceRequest
생성에 실패한 경우에 사용됩니다. 구현 예는 기능 및 이벤트 흐름 정의에서 제공됩니다.
데이터 테이블을 반환할 수 없는 경우 라이브러리는 오류를 반환합니다. 데이터 테이블을 반환할 수 있지만 보고할 문제가 있는 경우 라이브러리는 데이터 테이블과 함께 경고를 반환합니다. 예를 들어 라이브러리는 다음과 같은 상황에서 경고를 생성합니다.
- 쿼리 시각화에서 데이터가 잘리는
LIMIT
를 제공하는 경우입니다. - 쿼리 시각화가
FORMAT
절에 잘못된 형식 지정 패턴을 요청하는 경우
자체 경고를 추가하려면 base.Warning
인스턴스를 만들고 addWarning()
메서드를 사용하여 데이터 테이블에 이를 추가합니다.
로깅
도서관은 자카르타 커먼즈 로깅을 사용합니다. 자카르타 커먼즈 로깅은 이미 사용 중인 가장 일반적인 로깅 시스템과 함께 사용할 수 있습니다. 로깅 시스템이 표준이 아닌 경우 어댑터를 작성해야 할 수도 있습니다. 자세한 내용은 Jakarta Commons Logging 홈페이지를 참조하세요.
예외가 발생하면 정보가 로그로 전송됩니다. 로그에 액세스하는 방법은 사용하는 로깅 시스템에 따라 다릅니다.