사용자로 부터 수신한 작업 요청이 해당 세션의 사용자가 실행권한을 가지고 있는지 체크하여 권한이 있는 사용자로 부터의 요청인 경우에만 작업을 수행할 수 있도록 한다. 예제에서는 delete 작업 요청한 사용자가 로그인 세션의 userid와 동일한자, 해당 동작을 수행할 수 있는 사용자인지를 체크하기 위해 checkAccessControlList 를 구현하고 호출하도록 작성하였다.
@RequestMapping(value="/test/access_control_test.do", method = RequestMethod.POST) @ResponseBody public String testAccessControlPost(HttpServletRequest request,HttpServletResponse response){ StringBuffer buffer=new StringBuffer(); String name=request.getParameter("name"); String action=request.getParameter("action"); if( "view".equals(action)) { buffer.append("==> 사용자 정보조회<br/>"); }else if( "modify".equals(action)) { aclData[1] = name; buffer.append("==> 사용자 정보수정<br/>"); }else if ( "delete".equals(action)) { if ( checkAccessControlList(name) ) { aclData[0]=""; aclData[1]=""; buffer.append("==> 사용자정보삭제<br/>"); } else { buffer.append("==> 허용되지 않은 요청입니다.<br/>"); } }else if ( "edit".equals(action)) { aclData[0]=name; buffer.append("==> 사용자정보생성<br/>"); }
buffer.append("사용자명: "+aclData[0]+"<br/>"); buffer.append(" 전화번호: "+aclData[1]); return buffer.toString(); }
public boolean checkAccessControlList(String name){ String[] allowList = {"admin". "manager","root"}; String userid = request.getSession.getAttribute("userid"); if ( ! userid.equals(name)) return false; for(String allow : allowList ) { if ( allow.equals(name)) return true; } return false; } |
'보안 > 시큐어코딩' 카테고리의 다른 글
PMD Custom Rule (0) | 2015.05.11 |
---|---|
[시큐어코딩실습] 오픈리다이렉트 취약점제거 안전한 코딩 (0) | 2015.03.06 |
[문제풀이] 학습확인문제 정답 (0) | 2015.02.23 |
Spring Security 3 을 이용한 보안 강화 (0) | 2015.01.18 |
[HTML5 시큐어코딩] File API를 이용한 시스템 파일 탈취 (0) | 2014.12.18 |