프로젝트 배경:
SpringMVC + Mybatis + MySql 데이터베이스(javaWeb 프로젝트 개발)
관련 모듈: 로그인, 개인 정보 수정, 주문 세부 정보 조회
관련 취약점 소개 :
1. 로그인 인증코드 : 로그인 인증코드는 반드시 백그라운드에서 인증을 해야 합니다. 인증코드가 프론트에서만 인증되고 백그라운드에서 인증이 되지 않는 경우가 발생할 수 있습니다. 1차 검증 후 통과.
2. 인터셉터: 로그인 후 개인정보 작업 등 인터페이스 이름을 가로채려면 /user 또는 /admin을 사용하여 차단합니다. 로그인이 되어 있지 않으면 자동으로 로그인 페이지로 이동합니다.
3. 개인정보 수정: 개인정보 수정 시 사용자의 정보는 세션에 저장되어야 합니다. 이런 식으로 비밀번호 없는 인터페이스인 경우(즉, 정보 수정이 필요하지 않습니다.) 계정 정보 수정 시 사용자의 키를 고유 식별자로 직접 전달하지 않도록 주의하세요. 정보를 얻으려면 세션에서 현재 로그인된 사용자의 정보를 얻어 계정 3000001 사용자의 로그인을 방지할 수 있습니다. 그런 다음 계정 3000002 사용자의 개인 정보를 수정합니다.
4. 주문 세부정보 인터페이스: 사용자의 주문 내역을 조회하고 주문 ID를 통해서만 조회하는 경우 인터페이스 이름에 /user를 추가하더라도 비로그인이 차단됩니다. 사용자의 경우 다른 사용자가 주문 내역 이외의 주문 내역을 조회할 수도 있습니다. 로그인 후 자신의 것입니다. 이 경우, 주문 내역을 조회하기 전 해당 주문이 현재 로그인된 사용자의 개인 주문인지, 즉 세션의 ID가 주문을 생성한 사람의 ID와 일치하는지 확인해야 합니다. 정보 유출을 방지하기 위해
(참고: 위 취약점은 실제로 발생했습니다. 다른 초보자들이 이를 통해 배우고 개발 중에 발생한 문제에 대해 더 많은 사람들과 소통할 수 있기를 바라면서 게시합니다)