🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩
위아래 1줄씩 띄우고 중요한 부분은 볼드 효과
📍 파라미터 변조 취약점이란?
// 정상 요청
http://www.victim.co.kr/mypage.jsp?id=hacker
// 공격 요청
http://www.victim.co.kr/mypage.jsp?id=admin
👉🏻 Parameter Tampering Vulnerability
👉🏻 공격하기가 쉽고, 공격인지 정확히 알기 어렵다는 특징이 있음
📍 공격 원리 분석
👉🏻 (취약한) 정상 동작: 사용자 요청 > Application에서 DB 조회 후 해당 컬럼 반환 > 사용자에게 출력
👉🏻 비정상 동작: 공격자의 변조 요청 > Application에서 DB 조회 후 해당 컬럼 반환 > 공격자의 탈취
👉🏻 Application에서 세션 체크를 통해 실제 사용자인지 사용자의 명의를 도용한 공격자인지 알 수 있음
📍 대응 방안
// 게시글 무단 삭제/무단 수정
---> 세션
공격자 ---> 세션과 파라미터 비교 후 진행
---> 파라미터
...
String idx = request.getPrameter("idx");
String id = request.getSession().getAttribute("id");
...
pstmt = con.prepareStatement("SELECT * FROM MEMBER WHERE IDX = ?");
pstmt.setInt(1, idx);
rs = pstmt.executeQuery();
if(rs.next()) {
if(!rs.getString("id").equasl(id)) {
out.println("<script>alert('비정상 접근임'); history.back(-1);</script>");
return;
}
}
👉🏻 사용자 입력 값에 대한 검증 + 세션
// 세션을 통한 처리 소스코드 예시
...
String id = request.getSession().getAttribute("id");
...
pstmt = con.prepareStatement("SELECT * FROM MEMBER WHERE ID = ?");
pstmt.setString(1, id);
rs = pstmt.excuteQuery();
...
👉🏻 세션을 통한 처리
더보기