본문 바로가기

개발 관련 부가 지식/기타

(13)
Eclipse(이클립스) ClassNotFoundException 해결 방안 회사 업무에 이클립스 기반 프로젝트들이 많은데, 기능 개선을 할 때마다 clean, build 를 해줘야 코드가 제대로 인식이 된다. 근데 가끔씩 방금까지 되던 프로젝트가 ClassNotFoundException 이 뜨면서 프로젝트 실행이 안되는데 처음 이 문제가 생겼을 때, 해결에 시간이 꽤나 걸려서 글을 남긴다.. 인터넷에는 보통 1. Project - Clean 실행 2. Project → Properties → Java Build Path → Order and Export → JRE System Library (체크) 3. Project - Build Automatically (체크) 이렇게 나오는데, 다 했는데도 해결되지 않았고 2번같은 경우는 기존에 체크 없이도 잘만 됬었다. (3번은 필자는 ..
세션 하이재킹(Session Hijacking)에 대해서 세션 하이재킹은 Web에서 유저를 식별하는 세션을 탈취하여 아이디, 패스워드 없이 계정을 도용하는 공격 방법 👀 (Hijacking은 가로채다 라는 뜻) 주로 Stored XSS를 통해 세션 하이재킹 공격이 이루어짐 ❗ Stored XSS 이란? 악성 사용자가 악성스크립트(자바스크립트) 를 게시글 같은 것(서버 db)에 남긴 뒤에, 해당 게시글을 다른 유저가 들어올 때 악성 스크립트가 실행되는 공격 이때 악성 스크립트가 사용자 세션을 공격자 서버에 보내는 것이 포함되어 있으면, 세션 하이재킹이라 부름 대응방안 1. XSS 방어 2. HttpOnly 헤더 3. 세션 발급 시 인증 IP 넣고 검증 1번의 핵심은 사용자의 입력 값이 자바스크립트 형태일 때 어떠한 경우라도 실행되서는 안됨✨ ex) 해당 문구를 ..
시큐어코딩 - Parameter Binding 웹에서 SQL Injection을 방어하기 위해 가장 많이 알고 쓰이는 Parameter Binding 에 대해서 알아보자 ✔ // 취약한 코드 private final EntityManager em; public List findByName(String name) { String query = "select m from Member m where m.name = '" + name + "'"; return em.createQuery(query, Member.class).getResultList(); } 위 취약한 코드 name에 "admin' OR '1'='1" 가 들어가게 되면 String query = select m from Member m where m.name = 'admin' OR '1'='1..
Java Stack 구현 Stack은? LIFO(Last-In First-Out) 형태의 자료 구조 Stack 자료 구조 java로 구현해 보았다. -> MyNode라는 객체를 가지고 로직 구현을 함, MyNode는 입력데이터와 다음 MyNode의 주소 값을 가지고 있음 public class MyStack { class MyNode { private T data; private MyNode next; public MyNode(T data) { this.data = data; } } //-------------> Stack은 LIFO 구조로 top만 클래스안에서 직접 관리 private MyNode top; //-------------> push를 할때마다 top의 node를 바꿔줘야함 //-------------> (1). 기..
스프링 부트 동일 Apllication 여러 포트로 구동 with (인텔리제이) 인텔리제이로 스프링 부트 구동 시 application 을 다른 포트로 돌리는 방법 ✨ MSA 구조를 공부 하는 도중, 연습용으로 여러 포트의 어플리케이션 구동이 필요하였다. build를 한 후 터미널에서 java -jar를 통해 실행시킬 수도 있지만, 인텔리제이에서도 쉽게 구동할 수 있어 그 방법을 소개하려한다. 위와 같이 인텔리제이에서 같은 어플리케이션을 port 만 다르게 여러 서버를 쉽게 구동시킬 수 있다. 1. (1시 방향) Edit Configurations 열기 2. apllcation 클릭 후 Copy Configuration 클릭하여 복사 3. VM options 에 -Dserver.port=(원하는포트) 입력 후 apply -D는 자바 클래스를 실행함에 있어서 부가적인 옵션을 부가하는 ..
디자인패턴이란? 디자인패턴 ✔ -> 개발 과정에서 비슷한 유형을 패턴으로 정리한 것 -> 디자인 패턴 사용 이유는 코드 형태가 비슷하면 유지보수나, 협업에도 도움이 되고, 검증된 구조임 -> 목적에 따라 생성패턴, 구조패턴, 행동패턴으로 나뉘어짐 생성 패턴 -> 객체의 생성에 관련된 패턴으로 객체의 생성절차를 추상화하는 패턴 -> 종류 : 추상팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤 패턴 등이 있다. 싱글톤 패턴 이란? 인스턴스를 오직 1개만 생성하는 패턴이다. ex) 스프링에선 스프링 Core가 빈 컨테이너에서 싱글톤 객체를 관리 해준다. ex) 스레드 풀에선 DB 연결에 필요한 커넥션을 미리 만들어놓고 재사용하는데 이 또한 싱글톤 패턴이다. 팩토리 메소드 패턴 이란? 객체를 직접 생성하지 않고, 객체를 생..
웹 url 동작 과정, 쿠키와 세션, Rest api 브라우저에 URL을 치면 일어나는 일 👀 ex) 브라우저 도메인(www.naver.com) 입력 -> DNS(도메인 네임서버)에서 해당 도메인 IP주소를 받아옴 -> 브라우저가 Http Request message를 만듬 -> OS의 프로토콜 스택에 따라 패킷을 LAN 어댑터로 전달 -> LAN 어댑터는 전기신호를 만들어 LAN 케이블로 송출 -> 허브,스위치, 라우터 등을 경유하여 ISP(통신사)에 전송 -> POP를 거쳐 인터넷 핵심부에 들어가고 고속 라우터를 통해 상대방 서버에 도달 -> 상대 서버 LAN 방화벽에서 패킷 검사 후 이상이 없으면 캐시 서버로 패킷 전달 -> 캐시 서버에 응답데이터가 있을 경우 응답하고 없으면 웹서버로 전달 -> 웹서버에 패킷이 도달하면 패킷의 알맹이를 추출하여 Htt..
자료구조 기초 정리 자료구조란 1. 선형 자료구조 (앞과 뒤가 있고, 순서가 있다) 배열(array) -> 논리적인 순서와 물리적인 순서가 같음, 배열이 중간에 빌 수가 없음 배열의 장점: index 연산을 할 수 있어 검색이 빠름 O(1) 배열의 단점: insert , delete를 할 때 O(n)의 시간이 걸림 연결리스트(LinkedList) -> 노드를 사용, 값이 추가할 때 마다 메모리를 할당 받고, 값은 서로 링크로 연결, 데이터의 물리적 위치와 논리적 위치가 다를 수 있음 장점 : 배열에 비해 insert, delete 가 빠름 단점 : index 연산이 불가능, 검색이 느림 스택 -> 후입선출(LIFO, Last-In-First-Out) 구조로 마지막 데이터가 먼저 나오게 된다. 큐 -> 선입선출(FIFO, F..

728x90
반응형