2. 1. 테이블 이름 수정
• 문제점 : 테이블이름에서 약어 사이를 구분자(‘_’)없이 사용
(예, 일반회원관리테이블 => COMTNGNRLMBER)
• 행정정보 데이테베이스 표준화지침(안) 제34조 4항
(문서번호:eGOV-D01.023, 2008 11월 25일 제정)
; 둘 이상의 영문약어를 조합하여 사용하는 경우 언더 스코어(‘_’)를 사용
• 개선안 : 테이블 이름의 영문 약자 사이에 ‘_’를 삽입
(예, 일반회원관리테이블 => COMTN_GNRL_MBER)
3. 2. VO 클래스 사용개선안
• VO(Value Object)클래스용도
; 객체간의 정보전달용, 주로 메소드 함수의 매개변수로 사용
• 웹 프로그램에서의 검색 정보 유지 필요성
; 리스트화면의 검색/페이지정보는 상세화면/수정화면 조회 후에도 유지 필요
; 스프링의 폼바인딩 모듈 => 검색VO와 폼의 파라메터를 바인딩시켜 검색정보 유지
• 문제점
; 여러 형태의 VO생성 => 함수 인터페이스 기준이 모호해짐
(도메인VO, 검색VO, 도메인검색VO(도메인VO + 검색VO))
; 상세화면 조회 시 iBatis의 resultObject queryForObject(queryId, parameterObject)는
도메인검색VO를 파라메터로 받아 새 도메인 검색VO를 돌려줌으로 인해 검색정보 소실.
; 따라서 도메인검색VO외에 검색VO를 별도 관리함으로써 혼란가중.
• 개선안
; iBatis의 queryForObject(queryId, parameterObject, resultObject)함수 사용
; parameterObject와 resultObject를 같은 도메인검색VO를 사용함으로써 검색정보유지
; 스프링의 폼바인딩을 이용하면 웹 전체에서 하나의 도메인검색VO로 사용가능
; 전체소스가 간단해짐.
4. 3. 보안코드개선
• 스프링 시큐리티 모듈
; 인증 및 권한모듈로 구성
; 강력한 권한모듈기능 => 권한 모듈부터 시작(Acegi)
; 웹권한모듈, 메소드권한모듈, 도메인권한(ACL)모듈로 구성
; 권한모듈은 모두 AOP방식(웹=>스프링filterchain, 메소드=>스프링AOP, 도메인=>?)
; 웹 및 메소드 권한은 모두 롤(역할) 기반
• 문제점
; 잘못된 롤 개념(롤 => 추상적 권한대상자이지 자원이 아님)
; 이중으로 로그인하면서 중간 스프링 시큐리티 접속 URL이 노출됨
- 노출된 URL을 직접입력하여 접속하면 모든 권한 정보를 가져올 수 있어 더 치명적인
결과를 초래할 수 있음.
; 권한관리를 웹필터링에만 의존함으로써 서버부담이 가중, 메소드권한으로 이전 필요
; 기타…
• 개선안
; 현재 롤 개념수정 => 접근자원으로 정정
; 중간로그인을 리다이렉트가 아닌 필터 체인방식으로 변경
; 일반유저 및 관리자권한은 웹필터에서 수행하지 않고 메소드 권한에서 처리.
; 메소드권한은 메소드 권한 어노테이션으로 관리.