728x90
- 인증이나 인가와 같은 보안결정이 입력값(쿠키, 환경변수, 히든필드 등)에 기반으로 수행되는 경우 공격자는 이런 입력값을 조작하여 응용프로그램의 보안을 우회할 수 있다.
- 상태정보나 민감한 데이터 (사용자 세션정보 등)는 서버에 저장하고 보안확인 절차도 서버에서 실행한다.
안전하지 않은 코드 ▼
사용자의 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");
728x90
'△ > 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 |
댓글