1. 보안기능
기본적인 보안 기능을 다룰 때는 세심한 주의가 필요하다. 부적절한 보안특성의 사용은 오히려 성능이나 부가적인 문제를 불러 올 수 도 있다. 보안특성에는 인증, 접근제어, 기밀성, 암호화, 권한 관리 등이 포함된다.
1)
적절한 인증 없는 중요기능 허용
적절한 인증과정이 없이 중요정보(계좌이체 정보, 개인정보 등)를
열람(또는 변경)할 때 발생하는 보안약점이다. 대표적인 예로는 URL 점핑이 있다. URL 점핑이란 보호 되지 않은 페이지들을 찾아내기 위해서 추측되는 링크와 임의 대입 기법을 통해서 접근을
하는 방식이며, 정상적인 인증 과정을 거치지 않고 인증 우회의 방식으로 많이 사용되는 공격 기법이다.
n 안전한 코딩
기법
①
클라이언트의 보안검사를 우회하여 서버에 접근하지 못하도록 한다.
② 중요한
정보가 있는 페이지는 재 인증이 적용되도록 설계해야 한다.
2)
부적절한 인가
SW가 모든 가능한
실행경로에 대해서 접근제어를 검사하지 않거나 불완전하게 검사하는 경우, 공격자는 접근 가능한 실행경로를
통해 접근하여 정보를 유출할 수 있다.
n 안전한 코딩
기법
①
응용프로그램이 제공하는 정보와 기능을 역할에 따라 배분함으로써 공격자에게 노출되는 공격표면(attack surface)을 감소시킨다.
②
사용자의 권한에 따른 ACL(Access Control
List)를 관리한다.
1. public boolean recertification(HttpServletRequest request) {
2. HttpSession session = request.getSession();
3.
4. String userName = request.getParameter("username");
5. String password = request.getParameter("password");
6. if(userName == null || "".equals(userName) ||
7. password == null || "".equals(password))
8. throw new Exception("error");
9.
10. String sessionUserName = (String) session.getAttribute("username");
11. String sessionPassword = (String) session.getAttribute("password");
12.
13. if(userName.equals(sessionUserName) && password.equals(sessionPassword)) {
14. return true;
15. } else {
16. return false;
17. }
18. }
댓글 없음:
댓글 쓰기