Java & Spring20 Jasypt 1. Jasypt란 Java Simplified Encryption의 약자이며, Java 언어로 개발된 간단한 암호화 및 복호화 기능을 제공하는 라이브러리이다. 2. 장점Jasypt는 다양한 암호화 알고리즘과 기술을 지원하여 데이터 보안을 향상하는 데 도움을 준다.Jasypt는 대칭키 및 비대칭키 암호화 방식을 지원하고, AES, RSA 등 다양한 알고리즘을 선택할 수 있다.소스코드나 성정 파일에 민감한 정보가 노출되지 않도록 해준다.3. 예제###### 데이터베이스 연결 정보 ######## Database Configurationdb.driverClassName=net.sf.log4jdbc.DriverSpydb.url=G7AX2MI3LkSu4QTc8Rrg8SvH3KpTnKQtdwQvPQquGh4lyQ.. 2024. 10. 17. localhost:8080/ 로 접근했는데. 수상한 url로 가는 경우. 로컬 서버 구성 후 1. 설치된 Tomcat 경로의 web.xml 파일 내부 index.html index.htm index.jsp 2. 크롬, 엣지 등 브라우저의 캐시. > 앞전 localhost:8080 프로젝트의 캐시가 남아있는 경우. 3. mvc config 설정/** * Add Index Page */@Overridepublic void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:/index.jsp");} 4. 인터셉터 리다이렉션 등 위 4가지가 대표적인 원인. 생각보다 브라우저 캐시의 경우를 생각하지 않은 사람들을.. 2024. 5. 10. 과학기술정보통신부(과기정통부)에서 긴급으로 apache fileupload 및 tomcat 취약 버전 체크 자.. 최근 유지관리하던 홈페이지가 생겼는데 살펴보니.. 해당이 된다.. 이를 1.5 이상으로 교체.. 기존 1.2.2와 1.5간 호환성이 잘됨. commons fileupload 가 1.2.2에서 1.5로 업그레이드가 되면commons io 가 2.6버전으로 같이 업그레이드 되어야 함. 2024. 4. 16. intellij / project structure 설정하기. intellij(인텔리제이)에서 프로젝트를 import를 하고나서 project structure는 어떻게 잡아야 할까. 독학으로 알게된 부분에 대한 정리라 안맞는 부분이 있을 수도 있음. 하지만, 이렇게 이용했을 때 몇년간 별탈없이 잘 진행됨. 초반에 해당 부분에 대한 설정이 어떤건지 이해를 하지 못하여 어려움을 겪어 여기에 정리함. 아래 부터는 예시 그림과 설명 글을 왕복해서 보면서 하는 눈고통을 덜고자 이미지에 코멘트를 추가하여 등록함. 이미지 순서대로 빌드를 하면 Local에 프로젝트를 실행할 수 있음. maven과 gradle 둘다 별차이 없음. 1. 프로젝트 설정 2. 모듈 설정 3. 라이브러리 설정 4. 아티팩츠 설정 5. Run/Debug Configurations 설정 - Deployme.. 2023. 11. 7. SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation. build.gradle 파일에서 ... dependencies { // Spring MVC Dependency implementation "org.springframework:spring-core:5.0.0.RELEASE" implementation "org.springframework:spring-beans:5.0.0.RELEASE" implementation "org.springframework:spring-context:5.0.0.RELEASE" implementation "org.springframework:spring-webmvc:5.0.0.RELEASE" implementation "org.springframework:spring-websocket:4.1.6.RELEASE" implementa.. 2023. 10. 31. JAVA image resizing 이미지 리사이징 (feat. thumbnail), crop 지원 디렉터리에 원본 이미지가 존재할 경우. 원본 이미지를 이용하여 썸네일(Thumbnail)을 만들거나 작은 사이즈로 만들고 싶은 경우 활용이 가능하다. /** * 원본 이미지를 활용하여 리사이징된 이미지를 생성한다. * * @author mitw.tistory.com * @see * Modification Information * * 수정일 / 수정자 / 수정내용 * ------------------------------------------ * 2021-09-12 / mitw / 최초 생성 * * * @since 2021-09-12 * @param maxPixel String : 최대사이즈 * @param criteria String : 리사이징 시 최대사이즈의 기준 (가로:width,세로:그 외) * .. 2023. 9. 15. Java HttpServletRequest 클라이언트 IP 가져오기 (Client IP, 접속자 IP) /** * HttpServletRequest request 를 전달받아 클라이언트(접속자) IP를 가져오는 함수 * * @param request HttpServletRequest * @return ip String * */ @Deprecated public static String getRealClientIP(HttpServletRequest request) { //일반적으로 클라이언트와 서버 사이의 프록시나 로드 밸런서를 통해 전달된 클라이언트 IP 주소 String ip = request.getHeader("X-Forwarded-For"); //프록시를 통해 전달된 클라이언트의 IP 주소 ip = (ip == null || ip.length() == 0 || "unknown".equalsIgnore.. 2023. 9. 15. Spring에서 서버 상태를 체크하는 Interceptor !! Spring Interceptor에 등록하여 서버 상태를 예쁘게 출력해주는 Interceptor . 아래 그림처럼 Console창에 아주 예쁘게 뿌려준다. Class 명 : MitwServerStatusCheckerInterceptor 전문 제공 import org.springframework.lang.Nullable; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Mitw Se.. 2023. 9. 14. JSON 형태의 문자열(Json String)을 Map<String, Object> 형태로 변경해주는 함수 네이버 로그인 같은 api 형태를 사용할 때 반환되는 값은 Json String 형식이다. RestTemplate를 사용하면 만사 OK라서 해당 내용은 필요가 없다. 특정 환경상 RestTemplate가 힘든 경우 .. 1. Gson 활용 (재귀 필요없음) import com.google.gson.*; import java.util.Map; public class MainClass { /** * Json 형태의 String 값을 Map으로 변환하는 함수 : Gson은 Long이 아니라 double로 변경해서 문제가 생긴다. * */ private Map jsonStringToMap(String jsonString){ Gson gson = new GsonBuilder() .setLongSerializati.. 2023. 9. 14. List의 값을 가져와서 다른 List에 담을 때, for-loop, iterator, Stream foreach, ParallelStream에 대하여.. 먼저 100000개의 String 값을 가지고 있는 리스트가 있다고 가정을 하자. List list = new ArrayList(); for(int a=0; a 2022. 1. 13. log4j 취약점 조치 (CVE-2021-44228) (CVE-2021-4504) 2021년 12월 11일, 대대적으로 이슈였던 log4j 사건의 전말을 아래와 같습니다. Log4j 2에서 원격 코드 실행을 수반하는 제로 데이 공격, 즉 서술자 Log4Shell(CVE-2021-44228)이 알리바바그룹에 의해 2021년 11월 24일 발견되어 아파치에 보고되었으며 2021년 12월 9일 트위터를 통해 일반에 공개되었다.[9] 영향을 받는 서비스에는 클라우드플레어, 아이클라우드, 마인크래프트: 자바 에디션, 스팀, 텐센트 QQ, 트위터가 포함된다. - 출처 위키백과- 위 지침이 내려왔으나, 이미 지침이 있기 전 주말에 대대적으로 뉴스에서 이슈가 된 상태였다. 회사 프레임워크를 확인하니.. 아뿔사.. org.lazyluke log4jdbc-remix 0.2.7 org.apache.log.. 2021. 12. 30. 기본자료형과 객체자료형 차이점 List voList = getList(); for(VO vo : voList){ VO setvo = vo; System.out.println("flag ==> "+vo.getFlag()); // flag ==> C setvo.setFlag('U'); System.out.println("flag ==> "+vo.getFlag()); } 위 내용에서 voList속에 해당 1번째 vo의 flag의 값이 C라고 할 때, 새로운 VO인 setvo에 해당 vo를 넣어주고 setvo의 flag의 값을 U로 변경하면, vo의 flag의 값이 바뀔까? 안바뀔까? 자세한 내용은 아래에서 비롯됨. 자료형은 기본자료형과 객체자료형으로 볼 수 있다. 기본자료형은 int, float, double, char, boolean 등.. 2021. 12. 30. 이전 1 2 다음