정보보안/정보2009. 2. 28. 23:05

보통 웹 어플리케이션에서 log4j 등을 이용해 파일에 로깅을 합니다
일반적으로는 장애 발생시 에러 추적을 위해 사용됩니다
하지만 데이터 유실시 복구 방침으로 로깅을 하기도 하고요, 그냥 말 그대로 그냥 로깅을 하기도 하지요 또한 로그 파일을 파싱하여 무언가 통계를 내기도 합니다(웹CRM)

일반적으로 로그인에 대한 로깅을 파일에 다음과 같이 합니다 (로그인예가 아니더라도..)
String userid = request.getParameter("userid");
...
if (로그인성공)
    log.write("User login succeeded for : " + userid);
else
    log.write("User login failed for : " + userid);

로그가 정상적으로 기록된다면 아마 다음과 같은 형태가 될겁니다
User login succeeded for : guest
User login succeeded for : admin

그렇다면 로그인시 다음과 같은 문자열을 입력했으면 어떻게 될까요?
guest\nUser login succeeded for : admin

그럼 로그 결과는 다음과 같이 출력됩니다
User login succeeded for : guest
User login succeeded for : admin
User login succeeded for : admin
붉은색 부분이 사용자가 입력한 부분이죠

여기서는 간단한 예를 들었습니다만 여러가지면으로 활용이 가능할 겁니다
로깅파일을 100% 신뢰할 수 없다는 것이지요 ^^
Posted by Huikyun