[시큐어 코딩] #12. 적절한 인증 없는 중요기능 허용 :: 잡다한 프로그래밍
반응형

1. 정의

적절한 인증과정이 없이 중요정보(계좌, 개인정보 등)을 열람 할 때 발생하는 보안 약점이다.

 

2. 안전한 코딩 방법

  • 클라이언트의 보안검사를 우회하여 서버에 접근하지 못하도록 한다.
  • 중요한 정보가 있는 페이지는 재 인증이 적용되도록 한다.

3. 예시

재 인증 없이 계좌 이체를 진행하는 예시.

 

재인증을 통한 안전한 예시

위 예시는 실제 아래처럼 작동한다. 만약 중요기능 ex) 회원정보수정, 계좌 이체 같은 중요 기능을 수행할 때 다음처럼 비밀번호를 재인증하는 화면이 사용자에게 주어지고

사용자는 비밀번호를 올바르게 입력했다면, 서버에서는 기존 세션에 있던 정보와 비교하여 유효한 정보인지 검증하는 절차를 가진다.

 

 

다음의 예시는 중요정보(사원의 연봉 정보)를 열람하기 전에 열람 권한이 있는지 먼저 권한 테이블을 조회하여 확인한 후 조회를 허용한다. 적절한 자격이 있는 사용자만 이를 열람할 수 있게한다. 중요함수 전 인증 함수를 수행하여 유효한지 확인하는 방식이다.

사용자가 isStaff란 함수를 구현해 놓고 이를 다음과 같이 사용하여 검증한다.

 

4. 추가적인 방법

spring security를 이용한 권한 확인방법 다음과 같이 권한에 따라 유저가 이용할 수 있는 페이지를 구분하여 권한 검사를 진행할 수 있다.

<intercept-url pattern="/login/loginForm.do" access="permitAll" />
<intercept-url pattern="/home.do" access="permitAll" />
<intercept-url pattern="/admin/**" access="hasRole('ADMIN')" />
<intercept-url pattern="/**" access="hasAnyRole('USER, ADMIN')" />
반응형

+ Recent posts