본문 바로가기

ETC/JSP

4- JSP 게시판 (회원가입 기능)

추가된 페이지와 구조

 

 

signUp.jsp

  1. script를 사용하여 비밀번호 검사를 구현한다. (pwd와 pwdCheck가 같아야지 submit 통과)

  2. 비밀번호 검사를 통과했을때 EndUser에게 입력받은 id와 pwd값을 controller를 통해 singUp.cmd로 보낸다

 

 

signUpCmd

  signUp.jsp 에서 EndUser에게 받은 pwd값에 무작위 문자열 salt를 붙여서 Hashing처리 한다.

 

  1. getMemberNewMid 메소드 (in MemberDAO) 를 통해 들어갈 회원 'mId'를 구한다 (max(mid) + 1)

  2. insertJoinMember 메소드 (in MemberDAO) 

  이렇게 해싱처리한 pwd를 포함해 id와 getMemberNewMid 에서 구한 newMid, 무작위 문자열 salt

  insertJoinMember 메소드를 통해 DB에 insert한다.

 

 


 

 

 

signUp.jsp 의 Script

 

 

1. 비밀번호 확인을 입력하지 않았을때

  비밀번호를 입력하지 않으면 "비밀번호 확인을 입력해주세요." 문구를 출력한다

 

 

2. 비밀번호와 비밀번호확인이 일치하지 않을 때

  password와 pwCheck 가 일치하지 않으면 "비밀번호가 일치하지 않습니다" 문구를 출력한다.

  비밀번호가 일치하지 않은 상태에서 '회원가입' 버튼을 누르면

  alert 를 통해 "비밀번호가 틀렸습니다. 다시 입력해주세요" 창을 출력하고, signUp.jsp 페이지에 머무른다

 

 

 

3. 비밀번호와 비밀번호확인이 일치할 때

  password와 pwCheck 가 일치하면 "비밀번호가 일치합니다" 문구를 출력한다. 

  비밀번호가 일치한 상태에서 '회원가입' 버튼을 누르면

  alert 를 통해 "회원가입 완료!" 창을 출력하고, submit 기능을 수행한다

 

 

 

4. submit 기능 수행시 signUpCmd에서 기능 수행

 

 


 

 

Hashing 하여 암호화

 

 

 

        String id = request.getParameter("id");
        String password = request.getParameter("password");
        // String salt = request.getParameter("salt");
        String salt = String.valueOf(UUID.randomUUID());    // 무작위 문자열 : 회원가입 할 때 생성되어 DB의 salt 컬럼에 insert된다
        String passwordSalt =  password + salt;

        System.out.println("입력받은 id = " + id);
        System.out.println("입력받은 pwd = " + password);

        try{
            MessageDigest digest = MessageDigest.getInstance("SHA-1");
            digest.reset();;
            digest.update(passwordSalt.getBytes(StandardCharsets.UTF_8));
            password= String.format("%040x",new BigInteger(1,digest.digest()));
        }catch (NoSuchAlgorithmException e){
            e.printStackTrace();
        }
        System.out.println("해싱 pwd = " + password);

  위 코드는 password를 암호화 하는 SignUpCmd 코드의 일부이다.

 

  1. 입력받은 pwd와 무작위 문자열 salt를 조합한 passwordSalt를 선언한다

 

  2. passwrodSalt를 Hash 인코딩 하여 나오는 값을 password로 다시 지정해줬다.

  (위에서 출력한 password와 아래에서 출력한 password의 값이 다른 것을 볼 수 있다.)

 

  3. 따라서 DB에 들어가는 값은 newMid (회원정보가 들어갈 num), id, password (위에서 Hashing한 pwd), salt

 

 

그러면 LoginCmd에선 어떻게 확인할까?

 > 로그인 할 때 입력받은 pwd를 위와같이 Hashing하여 위에 저장한 DB의 password와 비교한다

 

 

 

 

'ETC > JSP' 카테고리의 다른 글

6- JSP 게시판 (수정한 오류)  (0) 2021.09.15
5- JSP 게시판 (아이디 중복확인 1)  (0) 2021.09.13
3- JSP 게시판 (답글기능)  (0) 2021.09.01
2- JSP 게시판 (게시글의 댓글갯수)  (0) 2021.08.31
1- Jsp 게시판 (댓글기능)  (0) 2021.08.30