- 1214 WebServer 7일차2023년 12월 14일 14시 49분 58초에 업로드 된 글입니다.작성자: 삶은고구마
조회 외에
등록,수정,삭제 시 confirm alert는 꼭 끼워넣자.
특히, 회원 삭제 시 "정말 탈퇴하시겠습니까?" 경고&알림을 해줘야함.
리다이렉트(Redirect)와 포워드(Forward)의 차이는 무엇인가?
리다이렉트와 포워드 특정 URL 접속 시 리다이렉트 또는 포워드가 일어나게 되면 작업 중인 페이지가 전환된다. 리다이렉트와 포워드는 페이지가 전환된다는 점에서 비슷한 역할을 한다. 하지만
kotlinworld.com
목차
-패스워드 암호화
-관리자 페이지에서 회원 목록 출력
-관리자 페이지에서 회원 검색
아이디, 이름, 이메일 별로 검색 가능하며 일부만 입력해도 해당 문자열을 포함한 결과 출력
ex)아이디 - gom 검색 시 gom123 nongdamgom77 회원이 검색 결과로 출력
비밀번호 - SHA512 암호화 적용하기
1.단방향 (비밀번호)
1234->QW23RWR(HASH값)
한 번 암호화되면 되돌릴 수 없음. 원래 값이 무엇인지 알 수 없다.
여기서 드는 의문점
그러면 암호화한 뒤에 원래 비밀번호와 어떻게 대조하여 로그인하는것인지?
1.사용자가 로그인 할 때 입력한 비밀번호를 매번 암호화한다.
2.이미 암호화된 비밀번호와 이번에 입력한 암호화된 비밀번호를 비교한다.
3.일치/불일치를 확인한다.
2.양방향 (전화번호, 주민등록번호)
1234<->3wtwtt
암호화, 복호화가 가능.
SHA512를 이용한 비밀번호 암호화 예제
public static String getEncryptedPassword(String password, String salt) { String encryptedPassword = null; //1.암호화 (hasing) try { MessageDigest md = MessageDigest.getInstance("SHA-512"); //입력한 비밀번호를 byte배열로 변환한다. byte[] input = password.getBytes("UTF-8"); //먹인다. md.update(input); //소화된 결과물을 확인한다.ㅋ byte[] output = md.digest();//이진데이터가 나옴 //2.인코딩 (encoding) 단순 변환작업 /** * 컴퓨터 분야에서 쓰이는 Base 64란.. 8비트 이진 데이터를 문자 코드에 영향을 받지 않는 * 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다. * 영대소문자(52개) * 숫자(10개) * +, / */ Base64.Encoder encoder = Base64.getEncoder(); encryptedPassword = encoder.encodeToString(output); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { throw new RuntimeException(e); } return encryptedPassword; }
테스트 용으로 abcd1234!를 입력하면.. 아래와 같이 암호화가 된다.
문제점이 발생하는데..
위의 두 패스워드는 각각 다른 유저들의 패스워드이다. 순서대로
유저A
유저B
인데, 아이디만 다를 뿐 패스워드는 같다.
암호화를 하긴 했는데 어쩐지 좀 허전한거같기도..
그 때 사용 할 수 있는게 salt다.
위의 코드에서 입력한 패스워드값 외에 사용자 아이디값도 받아서 salt라는 변수에 대입한 후
비밀번호를 암호화할 때 사용한다.
사용자마다 아이디는 다르므로 당연히 유저A와 유저B의 패스워드가 같을 때 암호화 된 결과는 상이함.
MessageDigest md = MessageDigest.getInstance("SHA-512"); byte[] input = password.getBytes("UTF-8"); //소금치기(재료:사용자 아이디) byte[] saltInput = salt.getBytes("UTF-8"); //먹인다. md.update(saltInput); //소화된 결과물을 확인한다.ㅋ byte[] output = md.digest(input);//이진데이터가 나옴
소금 간 한 결과 : 유저A와 유저B의 패스워드가 다르게 바뀜.
+
변환이 무사히 끝났다면, 비밀번호 관련 log는 주석처리하거나 제거하자.
+
webFilter로 사용자/혹은 특정그룹만 특정 웹페이지에 접근 허용할 수 있도록 필터링 할 수있음
인증:회원로그인
인가:회원/관리자
-
금일 실습과제 힌트
'공부 > web-server' 카테고리의 다른 글
1219 WebServer 9일차 (1) 2023.12.19 1215 WebServer 8일차 (0) 2023.12.15 1212 WEB SERVER 5일차 (0) 2023.12.12 1211 WebServer 4일차 (0) 2023.12.11 1208 WEB SERVER 3일차 (0) 2023.12.08 다음글이 없습니다.이전글이 없습니다.댓글