개발기록
-
[웹개발] Client - Server 간 pw 구간 암호화하기(SHA-256 + SALT)개발기록 2023. 1. 2. 21:47
개요 패스워드의 경우 관리자든 누구든 사용자 본인을 제외하고는 모르게 하는 게 맞다. 따라서 서버에서도 복호화되어서는 안 되기때문에 단방향 암호화를 할 때 쓰는 SHA-256 알고리즘을 사용하여 해싱한다. 로그인할 때, 클라이언트에서 해싱한 pw 값을 서버에게 넘겨주면 서버는 단순히 DB에 있는 값과 비교만 하는 역할을 수행한다. SHA-256 해시 알고리즘 종류 중 하나로 암호화된 문자열을 다시 평문으로 복호화 할 수 없다는 특징이 있다. 또한 같은 문자열을 넣으면 같은 해시 값으로 암호화해준다. 문제는 이 알고리즘이 대중에게 공개되어있기 때문에 해커들이 미리 문자열들을 해싱해두고 비교해볼 수도 있다. - 이와 관련된 개념으로 레인보우 테이블(rainbow table)이 있다. 레인보우 테이블 개념 참..
-
[Regex] 정규식 / 정규표현식 (Regular Expression, Regex)개발기록 2022. 12. 23. 17:19
개요 정규식을 사용하기 위해서는 패턴, 기호, 플래그, 메서드를 알아야한다. 정규식 docs 사이트 링크: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions 정규식 테스트 사이트 링크: https://regexr.com/ 참고: https://curryyou.tistory.com/234, http://www.codejs.co.kr/정규식-regular-expression/, http://regexp.elex.pe.kr/regular-expression 정규식 사용을 위해 알아야하는 부분 1. 패턴 패턴 의미 a-zA-Z 영어알파벳(-으로 범위 지정), 보통 []와 같이 사용 ㄱ-ㅎ가-힣 한글 문자(-으로 범위..
-
[Spring Boot] boolean값이 0 또는 false만 return할 때 해결 방법개발기록 2022. 11. 2. 09:31
개요 api를 호출해서 데이터를 받아쓰는데 boolean값이 0 또는 false로만 받아와졌다. 이 문제 해결 방법을 기록하고자 한다. 문제 코드 & 해결 방법 다른 문제가 아니라 lombok 라이브러리를 쓸 때, boolean타입의 필드명을 is~~로 작성한 것이 문제가 되었다. getter / setter를 사용할 때 boolean 타입 필드명에 "is"를 쓰지 않는 것이 jackson의 java bean 네이밍 규칙이라고 한다. 필드명 앞에 is를 빼주니 해결되었다. 참고: https://kimfish.co.kr/317 package com.??.domain; import lombok.Getter; @Getter public class Test { // private boolean isTest; /..
-
[Spring Boot] Real Remote(Client) IP Address 얻기개발기록 2022. 10. 11. 16:11
개요 유저의 IP 주소를 얻기위해 구글링 해보면 대부분 아래와 같은 코드를 볼 수 있을 것이다. 이를 봤을 때 if문이 계속 반복된다는 점이 거슬렸고 리팩토링해서 내 코드에 적용해야겠다고 생각했다. 참고: https://jul-liet.tistory.com/202 구글링 시 흔히 보이는 코드 프록시 서버 또는 로드 밸런서 등을 통과하면서 원 IP 주소를 식별하는 Header가 달라질 수 있다. X-Forwarded-For가 표준 Header로 쓰이고 있지만, 이 외에도 앞서 말한 이유로 인해 Header가 다를 수도 있으니 대표적인 Header들에 몇몇에 대해서 request를 체크할 필요가 있다. 아래 코드들에 보이는 "X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy..
-
[Spring Boot] request, response 로그 남기기1 - Console: 트러블슈팅개발기록 2022. 10. 11. 14:41
문제 발생 api 중 파라미터를 필요로 하는 api에서 로깅을 할 경우 파라미터가 사라지는 이슈가 발생했다. 알고보니 httpServeltRequest를 읽는 것(getInputStream)은 일회성만 가능하다고 한다. 참고: https://leeyongjin.tistory.com/entry/request-response-logging cf) 이전 포스트: https://jeongwoo.tistory.com/38 이전 포스트에서는 파라미터가 필요없는 api에 대해 request에 파라미터를 추가해서 날리고 테스트 했기 때문에 상관이 없었다. 하지만 실무에서 해당 이슈때문에 급하게 미봉책으로 수정한 코드를 기록으로 남긴다. + 다음에 시간이 되면 참고한 블로그를 따라해보든 해서 온전한 해결책을 찾아봐야겠다..
-
[메모장 hosts] hosts파일에서 ip와 도메인 주소 매핑하기개발기록 2022. 9. 27. 15:18
순서 1. 메모장을 관리자권한으로 실행 후 2. C:\Windows\System32\drivers\etc 경로에서 hosts를 연다. 3. 메모장 메모장 하위에 127.0.0.1 kt.com이라고 적어두면 kt.com을 인터넷창에 쳐도 로컬로 접속하게 된다(kt.com으로 접속 할 수 없음). 이유 이는 DNS 서버에서 도메인을 찾기 전 hosts에 적혀있는 것을 먼저 찾기때문이다. 이것은 127.0.0.1 대신 서버 ip주소를 적고 kt.com 대신 (DNS에 등록되지 않은)도메인 주소를 적어줄 경우, ip주소가 아닌 도메인으로 접근을 허용한 곳에 접근시킬 수 있다. ex) 쿠버네티스
-
[Spring Boot] Mybatis 설정(In application.properties)개발기록 2022. 9. 27. 10:46
개요 사소한 설정으로 개발 시간을 꽤 잡아먹을 수 있다. mybatis.configuration.map-underscore-to-camel-case=true 위 코드때문에 30~60분 정도 시간을 잡혔던 것 같다,, 따라서 기록으로 남겨둔다. 개발코드 - application.properties # resources/mapper/ mybatis.mapper-locations=mapper/*.xml mybatis.configuration.map-underscore-to-camel-case=true mybatis.mapper-locations를 통해 *.xml 경로를 알려준다. mybatis.configuration.map-underscore-to-camel-case=true 는 아래 예시에서 처럼 *.xm..
-
[Error, Spring Boot + JPA] repository 위치 변경 시 에러개발기록 2022. 9. 22. 09:52
개요 JPA repository의 디렉토리를 변경하다 아래와 같은 에러를 마주쳤다. JPA를 몇 번 안 써봐서 다음을 위해 해결방법을 기록해둔다. 에러내용 *************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in com.??.UserDetailsService required a bean of type 'com.??.UserRepository' that could not be found. Action: Consider defining a bean of type 'com.??.UserRepository' in your configuratio..