일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스프링
- 스프링 구글차트로 기간별 현황 조회하기
- 스프링과 스프링부트 차이점
- 썸머노트
- 오라클월별데이터
- 오라클통계
- CSS
- 자바왕기초
- 스프링 부트가 해결하려고 했던 문제
- 자바기초
- 스프링 에러
- jsp
- 오라클클라우드에 젠킨스 설치하기
- 자바왕초보
- 오라클
- java
- Spring Boot가 해결하려고 했던 문제
- 스프링 Ioc
- 오라클주별데이터
- 자바
- 스프링 구글차트
- 스프링 제어역전
- maven
- 세션
- 제이쿼리
- 자바 기초
- HTML
- 자바 왕기초
- 스프링 Ioc Container
- 오라클일별데이터
- Today
- Total
Just Do it
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 10일차 개발 일지 본문
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 10일차 개발 일지
Seojoo21 2022. 3. 19. 22:582022.03.19.토요일 10일차
오늘은 신규 회원 가입 시 기존 회원과의 아이디 및 사용자 이름이 중복되지 않도록 하기 위하여 회원 가입 페이지에 아이디 및 사용자 이름 중복 체크 기능을 추가하였다.
그리고 회원 가입 시 이메일을 통한 인증 번호 입력 기능 구현을 위해 SMTP를 이용한 메일 전송 방식을 공부하였다. 그리고 현재 프로젝트인 SJBoard에 이메일 인증 기능을 추가하여 실제 이메일 주소 입력 후 '인증 번호 전송' 버튼 클릭 시 테스트 메일이 이상 없이 전송되는지 확인하였다.
1. 제작 과정
1) 아이디 및 사용자 이름 중복 체크 기능
- Ajax 비동기 방식으로 구현
https://seojoo21.tistory.com/143
[혼자서도 잘해요] 스프링 회원가입 기능 만들기 3 : 아이디 및 사용자 이름 중복 체크
회원 가입, 회원 정보 조회, 회원 정보 수정, 회원 탈퇴까지 기본적인 CRUD 기능은 다 구현했다. 그런데 보통 사이트 회원 가입 시 아이디와 사용자 이름(별명) 중복 체크를 하지 않는가? 그래서 그
seojoo21.tistory.com
2) 이메일로 인증 번호 전송 1
- Ajax 비동기 방식으로 구현
- SMTP를 이용한 메일 전송 : 메일 서버에 계정 인증 후 메일을 전송하는 방법 사용 (naver 이메일 계정 활용)
https://seojoo21.tistory.com/146
[혼자서도 잘해요] 스프링 회원가입 기능 만들기 4 : 이메일로 인증 번호 전송 1
생각해보니 보통의 웹사이트들을 보면 회원 가입 시 아이디와 사용자 이름(별명) 중복 체크 뿐만 아니라 이메일로 인증번호를 받은 후 해당 인증번호를 입력해야지 회원 가입이 된다. 그래서 그
seojoo21.tistory.com
2. 발생 에러 및 해결 방법
1) SMTP 서버를 이용한 메일 전송 테스트 중 만난 세가지 에러
- DEBUG SMTP: could not connect to host "smtp.naver.com", port: 465, response: -1
- javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
- javax.net.ssl.SSLException: Unsupported or unrecognized SSL message
https://seojoo21.tistory.com/145
[스프링/STS] DEBUG SMTP: could not connect to host "smtp.naver.com", port: 465, response: -1 & javax.net.ssl.SSLHandshakeExce
첫번째 에러: DEBUG SMTP: could not connect to host "smtp.naver.com", port: 465, response: -1 개인 프로젝트 중 회원 가입 시 입력한 이메일 주소로 인증 번호를 보내주는 기능을 구현하고자 SMTP..
seojoo21.tistory.com
3. 오늘 프로젝트 진행하면서 추가로 배운 내용
1) 메일서버(SMTP Server)를 이용한 메일 전송
https://seojoo21.tistory.com/144
[스프링] 메일서버(SMTP Server)를 이용한 메일 전송
0. 개요 SMTP : Simple Mail Transfer Protocol의 약자로 전자 메일 전송을 위한 표준 프로토콜 SMTP Server : 이메일을 송신하는 서버. (메일 서버는 SMTP Server, POP3 Server가 있는데 POP3 Server는 이메일을..
seojoo21.tistory.com
2) 자바 Random 클래스와 SecureRandom 클래스의 차이
- Random 클래스는 시스템 시간을 시드로 사용하고 규칙이 있기 때문에 보안에 취약하다. 그래서 인증 번호나 임시 비밀번호와 같이 보안을 신경 써야 하는 경우라면 Random 클래스 보다는 SecureRandom 클래스를 사용하는 것이 좋다.
Random VS SecureRandom
1. 크기
- Random 클래스에는 48 비트만 있는 반면, SecureRandom은 최대 128 비트를 포함 할 수 있습니다.
따라서 SecureRandom에서 반복 할 가능성은 더 적습니다.
2. 시드 생성
- Random은 시스템 시간을 시드로 사용하거나 시드를 생성합니다.
따라서 공격자가 시드가 생성 된 시간을 알고 있으면 쉽게 재현 할 수 있습니다.
그러나 SecureRandom은 OS에서 임의 데이터를 가져 와서
(키 입력 사이의 간격이 될 수 있습니다. 대부분의 OS는 이러한 데이터를 수집하여 파일에 저장합니다.
-Linux / solaris의 경우 / dev / random 및 / dev / urandom)
이를 시드로 사용합니다.
3.코드 깨기
- Random의 경우 2 ^ 48 번만 시도하면 되며 오늘날의 고급 CPU를 사용하면 실제 시간에 깨뜨릴 수 있습니다.
그러나 SecureRandom을 위해서는 2 ^ 128 번의 시도가 필요하며,
오늘날의 고급 기계에서도 중단 되려면 몇 년이 걸릴 것입니다.
4. 생성 기능
- 표준 Oracle JDK 7 구현은 Linear Congruential Generator를 사용하여
java.util.Random에서 임의의 값을 생성합니다.
Secure Random은 SHA1을 사용하여 의사 난수를 생성하는 SHA1PRNG 알고리즘을 구현합니다.
알고리즘은 진정한 난수 (엔트로피 소스 사용)에 대해 SHA-1 해시를 계산 한 다음
각 작업에서 1 씩 증가하는 64 비트 카운터와 연결합니다.
5. 보안
- 결과적으로 java.util.Random이 중요한 응용 프로그램이나 중요한 데이터를 보호하기 위해
랜덤 클래스를 사용해서는 안됩니다.
출처: https://kdhyo98.tistory.com/m/48
'개인프로젝트 > [스프링] SJBoard 개발일지' 카테고리의 다른 글
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 13일차 개발 일지 (0) | 2022.03.23 |
---|---|
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 12일차 개발 일지 (0) | 2022.03.23 |
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 9일차 개발 일지 (0) | 2022.03.18 |
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 8일차 개발 일지 (0) | 2022.03.18 |
[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 7일차 개발 일지 (0) | 2022.03.16 |