본문 바로가기
Web Security/SecureCoding

보호 메커니즘을 우회할 수 있는 입력값 변조

by KkingKkang 2022. 11. 18.

- 인증이나 인가와 같은 보안결정이 입력값(쿠키, 환경변수, 히든필드 등)에 기반으로 수행되는 경우 공격자는 이런 입력값을 조작하여 응용프로그램의 보안을 우회할 수 있다.

- 상태정보나 민감한 데이터 (사용자 세션정보 등)는 서버에 저장하고 보안확인 절차도 서버에서 실행한다.

 

안전하지 않은 코드 ▼

사용자의 role을 설정할 때 사용자 웹브라우저의 쿠키의 role에 할당된 값을 사용하고 있는데,

사용자에 의해 변경되는 경우 role값이 의도하지 않은 값으로 할당될 수 있다.

Cookie[] cookies = request.getCookies();
for (int i=0; i<cookies.length;i++) {
	Cookie c = cookies[i];
    if(c.getName().equals("role")) {
    	userRole = c.getValue();
    }
 }

 

안전한 코드 ▼

사용자 권한, 인증여부 등 보안결정에 사용하는 값은 사용자 입력값을 사용하지 않고 내부 세션값을 활용한다.

HttpSession session = context.getSession(id);
String userRole = (String)session.getValue("role");

 

 

반응형

'Web Security > SecureCoding' 카테고리의 다른 글

크로스 사이트 스크립트 공격 취약점: DOM  (0) 2022.11.18
SQL 삽입공격 : mybatis Data Map  (0) 2022.11.18
정수 오버플로우  (0) 2022.11.17
HTTP 응답 분할  (0) 2022.11.16
절대 디렉터리 경로 조작  (0) 2022.11.16

댓글