e.printStackTrace()
부분 제외한 나머지 코드 오류 전부 수정try~catch 예외처리 시 e.printStackTrace()
를 사용할 경우 다양한 프로젝트 관련 정보를 다량 노출하게 되기 때문에 보안이 취약해진다고 한다.
변수명에 password
등이 들어가는 등 중요 민감 정보로 분류되는 변수를 선언할 때 미리 값을 할당해놓으면 취약성 검사에 걸린다는 것을 알게 되었다. String password="";
이런 식으로 공백을 할당해도 문제가 되니 주의하여야 한다.
먼저 크로스사이트 스크립트 문제란, 웹사이트의 입력창에 javascript, html태그, html 속성, 마우스이벤트, flash, activeX 등 웹브라우저에서 실행가능한 데이터를 입력해서 개발자 의도와 다른 동작을 하게 하는 공격방법이다.
웹 취약성 점검 결과, JSP 코드 내에 EL 문법을 사용하여 값을 출력할 경우 XXS 문제가 탐지되었다. 이 부분은 jstl c:out
을 사용하도록 변경해서 보완하였다.
보완 전
<span>${username}</span>
보완 후
<span><c:out value="${username}"/></span>
코드 상 null이 될수도 있는 변수를 참조하는 코드가 있을 경우 탐지되는 문제였다.
참조하기 전 해당 변수가 null인지 체크를 한 후 코드를 입력하도록 변경해서 보완하였다.
String [] usernames = null;
// 기존
System.out.println(usernames.toString());
// 수정
if(usernames != null) {
...
}