사용자 제어 권한 검사

사용자 제어 권한 검사

설명

쿠키나 요청 파라미터처럼 사용자가 수정할 수 있는 값을 권한 판단에 사용하면 접근 제어가 우회될 수 있습니다.

잠재적 영향

다른 사용자 데이터 조회, 관리자 기능 접근, 권한 상승이 가능합니다.

해결 방법

권한과 사용자 식별자는 서버 세션 또는 서버 측 저장소에서 조회하고, 클라이언트 제공 값은 신뢰하지 않습니다.

예시

currentUserRoleFromDatabase()는 구현을 생략한 애플리케이션 함수입니다. 요청이 지정한 사용자 대신 인증된 사용자의 서버 측 식별자로 역할을 조회해야 합니다.

변경 전

php
<?php
if ($_COOKIE['user_role'] === 'admin') {
    show_admin();
}

변경 후

php
<?php
if (currentUserRoleFromDatabase() === 'admin') {
    show_admin();
}

설명:

  • 변경 전: 권한 부여 결정이 쿠키나 기타 클라이언트가 제어하는 요청 데이터에 의존합니다.
  • 변경 후: 권한과 사용자 식별자는 서버 세션 또는 서버 측 저장소에서 조회하고, 클라이언트 제공 값은 신뢰하지 않습니다.

참조