본문 바로가기
728x90

전체 글188

XSS와 lucy xss Sax filter XSS란? Cross-site Scripting 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취 자바스크립트를 사용하여 공격하는 경우가 많음 Text-Only 게시판 등에서는 XSS가 발생하는 경우는 없다 Stored XSS 사이트 게시판이나 댓글, 닉네임 등 스크립트가 서버에 저장되어 실행되는 방식 Reflected XSS URL 파라미터(특히 GET방식)에 스크립트를 넣어 서버에 저장하지 않고 그 즉시 스크립트를 만드는 방식 브라우저 자체에서 차단하는 경우가 많아 상대적으로 공격을 성공시키기 어려움 방어 방법 XSS는 데이터를 입출력 할 때.. 2024. 1. 19.
컴퓨터로 숫자 문자 표현하는 방법 (이진수, 십육진수, 아스키코드) 1. 정보 단위 워드(word) CPU가 한 번에 처리할 수 있는 정보의 크기 단위 하프 워드 (half word) / 풀 워드 (full word) / 더블 워드 (double word) 2. 이진수 표기 ex) 8을 표기할 때 1000(2) 0b1000 0과 1로 음수 표현하기 : 2의 보수 어떤 수를 그보다 큰 2ⁿ에서 뺀 값 ex) -3 11(2) 보다 큰 2ⁿ = 100(2) 100(2) - 11(2) = 01(2) 모든 0과 1을 뒤집고 1 더한 값 11key(2) -> 00(2) -> 01(2) 플래그(flag) 로 양수 음수 구분 플래그 종류 의미 사용 예시 부호 플래그 연산한 결과의 부호를 나타낸다 1 : 계산 결과는 음수 0 : 계산 결과는 양수 제로 플래그 연산 결과가 0인지 여부를 .. 2024. 1. 19.
컴퓨터 구조 데이터 숫자, 문자, 이미지, 동영상과 같은 정적인 정보 컴퓨터와 주고받는 정보 / 내부에 저장된 정보를 데이터라 통칭하기도 함 0과 1로 숫자를 표현하는 방법 0과 1로 문자를 표현하는 방법 명령어 컴퓨터는 결국 명령어를 처리하는 기계 컴퓨터를 실질적으로 움직이는 정보 데이터는 명렬어를 위한 일종의 재료 명령어의 생김새와 동작 방식 CPU ( central processing unit ) CPU는 메모리에 저장된 값을 읽어 들이고, 해석하고, 실행하는 장치다 CPU 내부에는 ALU, 레지스터, 제어장치가 있다. ALU : 계산기 (Arithmetic Logic Unit) 레지스터 : CPU 내부의 작은 저장장치 (임시 저장 장치) 제어장치 : 제어 신호를 내보내고, 명령어를 해석하는 장치 (컴퓨터 부품.. 2024. 1. 4.
Comparable 인터페이스 Java의 Comparable 인터페이스는 객체들의 정렬(sorting)을 위해 사용됩니다. - Comparable 인터페이스는 compareTo() 메서드 하나만 정의되어 있습니다. - 이 인터페이스를 구현한 클래스는 서로 그 객체들을 비교할 수 있습니다. - compareTo() 메서드는 인자로 전달된 객체와 자신을 비교해서 정수 값을 리턴합니다. - 반환값이 0이면 두 객체가 같다는 것이고, 음수이면 자신이 앞에 오고, 양수이면 인자로 받은 객체가 앞에 오는 것입니다. - 이를 통해 객체들을 정렬할 수 있습니다. - 주로 Wrapper 클래스(Integer, Double 등), String, Date와 같은 클래스가 Comparable을 구현하고 있습니다. - Collections.sort()를 사.. 2023. 11. 16.
PriorityQueue (우선순위 큐) PriorityQueue는 우선순위 큐(priority queue)를 구현한 자료구조입니다.이는 우선순위(priority)를 가진 항목들을 저장하는 큐로, 항목의 우선순위에 따라 항목들이 저장/제거됩니다. PriorityQueue는 내부적으로 배열이나 힙(heap)등의 자료구조를 사용하여 구현될 수 있습니다.대표적으로는 최소 힙(min heap)을 기반으로 구현되어, 저장된 항목 중 우선순위가 가장 높은(값이 가장 낮은) 항목이 가장 먼저 제거됩니다. PriorityQueue의 주요 메서드는 다음과 같습니다: - add(E e): 큐에 항목 e를 삽입합니다.  - peek(): 큐의 제일 앞, 즉 우선순위가 가장 높은 항목을 반환합니다.  - poll(): 큐의 제일 앞 항목을 제거하고 반환합니다. - .. 2023. 11. 14.
웹 애플리케이션의 이해 1. 웹 서버, 웹 애플리케이션 서버 1) 웹 서버(Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가 기능 정적(파일) HTML, CSS, JS, 이미지, 영상 NGNIX, APACHE 등 2) 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반으로 동작 웹 서버 기능 포함 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC 톰캣, Jetty, Underetow 3) 웹 서버, 웹 애플리케이션 서버 차이 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직 자바는 서블릿 컨테이너 기능을 제공하면 WAS WAS는 애플리케이션 코드를 실행하는데 더 특화 4) 웹 시스템 .. 2023. 11. 7.
캐시와 조건부 요청 1. 캐시 기본 동작 1) 캐시가 없을 때 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. 인터넷 네트워크는 매우 느리고 비싸다 브라우저 로딩 속도가 느리다 느린 사용자 경험 2) 캐시 적용 캐시 덕분에 캐시 가능 시간 동안 네트워크를 사용하지 않아도 된다. cache-control: max-age=60 (캐시가 유효한 시간) 비싼 네트워크 사용량을 줄일 수 있다. 브라우저 로딩 속도가 매우 빠르다. 빠른 사용자 경험 3) 캐시 시간 초과 캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고, 캐시를 갱신한다. 이때 다시 네트워크 다운로드가 발생한다. 2. 검증 헤더와 조건부 요청 캐시 유효 시간이 초과해서 서버에 다시 요청하면 다음 두 가지 상황이 나타난다. .. 2023. 11. 3.
Doubly Linked List 이중 연결 리스트 * 이중 연결 리스트는 순차적으로 연결된 노드 집합으로 구성된 데이터 구조 * 각 노드가 이전 노드와 다음 노드를 가리킨다. * 노드는 이전 노드와 다음 노드를 가리키는 두 개의 포인터로 '이중 링크'되어 있다. public class DoublyLinkedList { Node head; // 첫번째 노드 Node tail; // 마지막 노드 int size; // 이중 연결 리스트 요소 수 //constructor public DoublyLinkedList(){ head = null; tail = null; size = 0; } //node class private static class Node { int data; Node prev; Node next; //constructor public Node.. 2023. 10. 24.
ArrayList 1. 생성 ArrayList arrayList = new ArrayList(); 2. 요소 추가 arrayList.add("apple"); arrayList.add(2,"banana"); 3. 요소 검색 arrayList.get(1); 4. 요소 업데이트 arrayList.set(1, 'grape'); 5. 요소 제거 arrayList.remove(2); 6. 크기 출력 System.out.print(arrayList.size()); 7. 요소 포함 여부 if(fruits.contains("banana")) { System.out.print("true"); }else { System.out.print("false"); } 8. 정렬 오름차순 정렬 : Collections.sort() ArrayList l.. 2023. 10. 23.
배열 인덱스 범위 초과 예외 처리 int[] numbers = {1,2,3,4,5}; try { int value = numbers[5]; }catch(ArrayIndexOutOfBoundsException e) { System.out.println("invalid index specified"); } 2023. 10. 18.
728x90