티스토리 뷰
가. 원인
- 자동화된 코드를 통한 요청인지 실제 사용자의 정상적인 요청인지 확인하지 않고 요청을 처리
나. 영향
- 희생자의 권한으로 요청이 처리
- 관리자 또는 다른 사용자의 권한을 도용하여 중요기능을 실행
다. 보안대책
- 입력화면 폼 작성 시 POST방식을 사용
- CSRF토큰을 이용하여 URL 직접호출을 통한 시스템 사용을 방지
- 중요기능에 대해서 사용자 세션검증 및 재인증
라. 안전한 코드
1. CSRF토큰 이용
// 1. 입력화면을 요청받은 경우 String token = UUID.randomUUID().toString(); session.setAttribute("CSRF_TOKEN", token);
// 2. 입력화면에서 Hidden 필드를 통해 전달받은 토큰을 전달 <input type="hidden" name="CSRF_TOKEN" value="${CSRF_TOKEN}" />
// 3. 요청 처리 시 String requestToken = request.getParameter("CSRF_TOKEN"); String sessionToken = (String)session.getAttribute("CSRF_TOKEN");
if ( requestToken == null || requestToken.equals( sessionToken )) { return 0; } ...
|
마. 진단방법
<사용자 검증>
1. 주요기능을 확인
2. 주요기능 수행 시 권한확인 절차 존재 확인
3. 권한확인 시 자동제출되는 정보(세션쿠키, IP 등)가 아닌 것으로 검증하는지 확인
바. 정/오탐 케이스
<오탐 케이스>
1. 요청 처리시 세션의 토큰과 히든필드를 통해 전달받은 토큰을 비교하여 일치하는 경우만 기능 제공 시
'Web Analytics > SW 보안약점 진단원' 카테고리의 다른 글
[구현보안] 입력 데이터 검증 및 표현 12 - 정수형 오버플로우 (0) | 2019.10.04 |
---|---|
[구현보안] 입력 데이터 검증 및 표현 11 - HTTP 응답분할 (0) | 2019.10.04 |
[구현보안] 입력 데이터 검증 및 표현 09 - LDAP 삽입 (0) | 2019.10.02 |
[구현보안] 입력 데이터 검증 및 표현 08 - XPath 삽입 (0) | 2019.10.02 |
[구현보안] 입력 데이터 검증 및 표현 07 - XQuery 삽입 (0) | 2019.10.01 |
- Total
- Today
- Yesterday