-
Notifications
You must be signed in to change notification settings - Fork 0
7월 26일 랜덤 그룹 2조
이지표 edited this page Jul 26, 2024
·
6 revisions
- Http Form에서 Put, Delete를 지원하지 않아서 스크립트로 보낼 수가 있다.
- 보안상으로 DB 환경변수값을 따로 설정함 → 파일 or 시스템 환경 변수도 활용
- 리플렉션으로 Mapper 만들어서 Repository 코드를 깔끔하게 처리 할 수 있다
- 한글로 메서드 명을 만들 수 있다 @Nested 써서 클래스 이름 한글로 해놓고 공통적으로 처리할 수 있다.
- 개행을 해야된다. html은 개행문자를 무시한다.
- 엣지 케이스를 항상 고민해야 겠다는 생각을 했어요.
- 보안에 있어서 굉장히 중요하게 생각해야 한다는 생각을 했어요.
- 비밀번호 불일치 시에 조그마한 에러 박스를 띄워주는 부분이 인상깊었습니다.
- 비밀번호를 pbkdf2로 암호화하여 저장하도록 구현한 것이 인상깊었습니다.
- jdbc
PreparedStatement
를 사용해 IN 키워드 쿼리를 전달하고 싶을 때?
를 사용한 매개변수 매핑이 안 된다는 부분을 알게 되었습니다. - 배포 환경과 로컬 환경의 DB 설정을 다르게 하기 위해 시스템 환경 변수를 활용했습니다.
배운점
- java 의 기본 패스워드 해시 알고리즘을 사용했을 때 ai 가 Base64 인코딩을 추천한 이유에 대해 같이 토의해보았습니다. byte 를 new String 으로 바꾸면 7bit 를 넘어서는 바이트에 의해 글자가 깨집니다. 그렇기 때문에 Base64 인코딩이 필요합니다.
- 전 주에 sql injection 에 대한 이야기가 많이 나왔는데 이번 미션에서는 jstl 태그를 쓰면 해결이 가능하다고 합니다.
고칠거
- 에러 관련해서 에러코드를 제대로 못 날려주고 있는 점
- DB 커넥션 풀 도입 - HikariCP 를 쓰거나 MySQL 설정을 하는 방법이 있음
- html 의 개행 문자를 제대로 보여주지 못하는 문제가 있음 - jsp fortokens 를 쓰면 해결 가능
- 필터로 유저 페이지 접근 자체를 막아야함
- 지금은 객체 연관관계가 있는 경우 Eager Loading 인데 Lazy Loading 를 하거나 쿼리를 모아서 쓰는 방법을 써야될거 같음
- PBEKey 비밀번호 byte[] 생성 결과를 문자열로 저장하고 싶을 땐 new String 이 아니라 Base64 인코딩을 써야 한다
- String은 아스키코드 범위안의 값만 변환하고 아닌 값은 무시한다
- 범위 밖의 값이 byte[] 안에 있다는 확인이 없다면 Base64 쓰자
- 스프링과 유사하게 서블릿을 하나 두고 controller를 만드신 분을 봤습니다. 스프링은 디스패처서블릿을 왜 도입했는가 고민해 본적이 있어서 이야기를 나눌 수 있는 좋은 시간이였습니다
내 코드 중에 비밀번호를 해쉬화 시키면 byte[]로 받게 되는데, Base64로 다시 인코딩 하는 부분이 있었다. 그 코드를 작성할 당시 ai가 추천해준데로 Ctrl + C, Ctrl + V하였다. 코드 리뷰시간에 왜 Base64로 인코딩하였는지 질문을 받았는데, 제대로 답변하지 못했다. 내가 작성한 코드에 이유없이 그저 복사해서 붙여넣었다. new String으로 변환할 시 제대로 변환될 수 있는 수의 범위가 있기에, 다른 비밀번호로 접속해도 로그인이 될 가능성이 생길 수 있다. 이러한 이유에 ai는 Base64인코딩하는 방법을 제시한 것이다. (킹갓ai) 나는 개인적으로 ai에게 물어봐서 복사 붙여넣기가 나쁜방법이라 생각하지 않는다. 효율성이 너무 차이가 나기 때문이다. 구글링 하던지, 물어보든지, 퀄리티가 다르지 않다고 생각한다. 다만 내가 그 코드를 사용할 경우 이유는 있어야 한다. 그저 코드만 가져오지 말고, 왜 그렇게 작성했는지 ai에게 다시 한 번 물어보자!