올바르게 링크된 UA 계정에 로그인된 악의적인 사용자가 시스템에 요청을 보내 다른 사용자와 관련된 데이터를 요청합니다. 이러한 상황이 발생하지 않게 하려면 모든 페이지 매개변수의 유효성을 검증하여 현재 로그인된 사용자를 역으로 추적할 수 있도록 해야 합니다. 판별 방법은 각 유형의 레코드마다 다릅니다. 예를 들어, 지급금이 지급된 케이스를 통해 역으로 지급금을 받은 참여자를 추적해 갈 수 있습니다.
curam.citizenaccount.security.impl.CitizenAccountSecurity API는 OOTB 페이지가 시민에게 제공하는 레코드 유형에 대해 이러한 검사를 수행하는 메소드를 제공합니다. 특정 정보는 이 API의 javadoc을 검토하십시오. 서로 다른 유형의 데이터를 제공하는 사용자 정의 페이지의 경우 페이지 매개변수의 유효성을 검증하도록 추가 검사를 구현해야 합니다. 이 검사는 사용자 정의 보안 API에 추가되며 문제의 façade 메소드가 호출합니다. 이 메소드는 요청된 레코드를 역으로 추적하여 현재 로그인된 사용자를 찾을 수 있는지 확인해야 합니다. 그렇지 않은 경우 사용자 이름, 메소드 이름 및 기타 데이터를 로그하고 즉시 트랜잭션을 실패로 처리해야 합니다(유효성 검증 헬퍼에 문제를 추가하고 트랜잭션을 계속 처리할 수 있도록 허용하는 경우와 반대).
if (paymentInstrument.getConcernRole().getID() != citizenWorkspaceAccountManager .getLoggedInUserConcernRoleID().getID()) { /** * 전달된 지급 도구가 로그인된 사용자 로그, * 현재 사용자의 사용자 이름, 호출된 메소드 및 * 기타 관련 데이터와 연관되지 * 않음 */ // 일반 메시지 예외 처리(throw) throw PUBLICUSERSECURITYExceptionCreator .ERR_CITIZEN_WORKSPACE_UNAUTHORISED_METHOD_INVOKATION(); }
위반에 관한 정보가 가능한 많이 로그되어야 하지만 예외 처리(throw)된 예외가 악의적인 사용자에게 유용할 수 있는 정보를 노출하지 않아야 합니다. 잘못된 사항과 관련된 정보가 포함되지 않은 일반 예외는 발생시켜야 합니다. curam.citizenaccount.security.impl.CitizenAccountSecurity API가 "이 페이지에 대한 액세스 권한이 없습니다"라는 일반 메시지를 표시합니다.