learn to code

    [웹 해킹 & 시큐어 코딩] 04. XXE Injection

    🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩 위아래 1줄씩 띄우고 중요한 부분은 볼드 효과 📍 XXE Injection이란? 👉🏻 XML External Entity: XML 외부 개체 주입 👉🏻 json의 등장으로 XML 사용은 줄어든 추세이나 아직 사용하는 곳이 많아서 해당 부분도 고려해야 함 📍 공격 대상 👉🏻 XML 파서 기능이 있는 Application에서 공격을 시도함 👉🏻 해당 기능이 많지는 않으나 레거시 시스템에서는 아직 사용 중이라 해커들의 먹잇감이 되고 있음 📍 공격 원리 분석 // 정상적인 XML Parser 예시 사용자 Application XML 파서 XML // 비정상적인 XML Parser 예시 DTD를 이용한 외부개체 참조 -------------..

    [웹 해킹 & 시큐어 코딩] 03. OS Command Injection

    🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩 위아래 1줄씩 띄우고 중요한 부분은 볼드 효과 📍 OS Command Injection이란? 👉🏻 운영체제(시스템) 명령어 주입 👉🏻 원격 실행 명령어를 주입함으로써 공격자가 원하는 명령을 실행하게 함 👉🏻 서버의 중요 설정 파일 등을 조회/수정/삭제하고 서버 자체를 재실행 한다든지 치명적인 공격이 될 수 있음 📍 공격 대상 👉🏻 SQL Injection은 Application과 DB가 연결된 상태(DB Connection)에서만 공격 가능 👉🏻 OS Command Injection은 Application과 시스템 명령어가 연결된 상태에서 공격 가능 👉🏻 즉, OS Command Injection은 일반 웹사이트 중에서도 특정 관리..

    [웹 해킹 & 시큐어 코딩] 02. SQL Injection

    🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩 위아래 1줄씩 띄우고 중요한 부분은 볼드 효과 📍 SQL Injection이란 무엇인가? 👉🏻 SQL(구조화된 질의 언어) Injection(주입): 구조화된 질의 언어를 주입하는 공격 👉🏻 웹 해킹의 일등공신 📍 취약점 발생 원인 👉🏻 공격자가 SQL 구문을 주입 > 입력값 검증 없이 구문 조합 > 사용자의 입력값 + 미완성된 SQL 구문 > 완성된 SQL 구문 > DB 질의 요청 > 결과에 따른 동작 구문 String id = request.getParameter("id"); String sql = "select * from employee where id = '" + id + ""; 라는 구문에서 공격자가 id값으로 ' 1=1..

    [웹 해킹 & 시큐어 코딩] 01. 웹 해킹에 대한 이해

    🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩 위아래 1줄씩 띄우고 중요한 부분은 볼드 효과 📍 웹 해킹 👉🏻 웹 서비스상에서 발생될 수 있는 모든 보안 허점을 이용해 악의적인 행위를 하는 것 👉🏻 어플리케이션: jsp, hph, asp, aspx 등 웹 브라우저를 통해서 접속하는 것들 📍 방화벽 도입이 웹 해킹 확산의 원인! 👉🏻 방화벽을 도입하면서 '웹' 해킹에 주목됨 👉🏻 원인: OSI7 레이어 중 방화벽은 4단계(포트 등)까지 확인하는데 대외 서비스가 필요하지 않은 SSH, TELNET, SFTP 등에 대해 방화벽을 세워 접근을 막음으로써 공격자는 자연스럽게 웹을 공격하게 됨 📍 웹 해킹을 통한 피해 영역 👉🏻 랜섬웨어를 사용하여 사용자의 개인정보를 이메일 열람, 인사 ..

    [Java] Object의 key 중복 제거 - DeduplicationUtils

    List로 받아온 값 중 특정 key값을 기준으로 중복 삭제 기능을 할 수 있는 유용한 코드 [사용법] 1) DeduplicationUtils.java 파일 생성 2) DeduplicationUtils.java 파일에 package 경로 적용 3) 기존 리스트 조회 4) 기존 리스트와 같은 객체를 사용하는 리스트 생성 5) 4의 새로운 리스트에 아래 적용법 사용 List newList = DeduplicationUtils.deduplication(기존리스트이름, 객체명::get키값); package 패키지 경로; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util..

    [HTTP] 섹션 6. HTTP 상태코드

    🔥 모든 개발자를 위한 HTTP 웹 기본 지식 섹션6. HTTP 상태코드 📍HTTP 상태코드 소개 ✅ 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려 주는 기능 👉🏻 1xx (Informational): 요청이 수신되어 처리 중 (거의 사용되지 않음) 👉🏻 2xx (Successful): 요청 정상 처리 👉🏻 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 👉🏻 4xx (Client Error): 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 👉🏻 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 ✔️ 만약 모르는 상태 코드가 나타나면? 👉🏻 클라이언트가 인식할 수 없는 상태 코드를 서버가 반환하면 상위 상태코드로 해석해서 처..

    [HTTP] 섹션5. HTTP 메소드 활용

    🔥 모든 개발자를 위한 HTTP 웹 기본 지식 섹션5. HTTP 메소드 활용 📍 클라이언트에서 서버로 데이터 전송 ✔️ 데이터 전달 방식 1) 쿼리 파라미터를 통한 데이터 전송 👉🏻 GET 👉🏻 주로 정렬 필터(검색어) ✔️ 데이터 전달 방식 2) 메시지 바디를 통한 데이터 전송 👉🏻 POST, PUT, PATCH 👉🏻 회원가입, 상품 주문, 리소스 등록, 리소스 변경 1️⃣ 정적 데이터 조회 GET /static/star.jpg HTTP/1.1 Host: localhost:8080 HTTP/1.1 200 OK Content-Type: image/jpeg Content-Length: 34012 lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98udjklaslkjdfl;qkaw..

    [HTTP] 섹션4. HTTP 메소드

    🔥 모든 개발자를 위한 HTTP 웹 기본 지식 섹션4. HTTP 메소드 📍 HTTP API를 만들어 보자 👉🏻 요구사항: 회원 정보 관리 API를 만들어라! 1) 회원 목록 조회 2) 회원 조회 3) 회원 등록 4) 회원 수정 5) 회원 삭제 ✅ API URI 설계 👉🏻 회원 목록 조회 /read-member-list 👉🏻 회원 조회 /read-member-by-id 👉🏻 회원 등록 /create-member 👉🏻 회원 수정 / update-member 👉🏻 회원 삭제 /delete-member 🤔 이것이 좋은 설계일까? ❗️ 가장 중요한 것은 리소스 식별 ✅ API URI 고민 👉🏻 URI(Uniform Resource Identifier) 🤔 리소스의 의미는 뭘까? ❗️ 회원을 등록하고 수정, 조회하..

    [HTTP] 섹션3. HTTP 기본

    🔥 모든 개발자를 위한 HTTP 웹 기본 지식 섹션3. HTTP 기본 📍 모든 것이 HTTP 👉🏻 HyperText Transfer Protocol - 하이퍼텍스트를 통해 문서를 보낼 수 있는 프로토콜 👉🏻 처음에는 텍스트 파일만 사용했지만 지금은 JSON, XML(API), 음성, 영상 등 거의 모든 형태의 데이터 전송 가능 👉🏻 서버 간에 데이터를 주고받을 때도 대부분 HTTP 사용! ✅ HTTP 역사 👉🏻 HTTP/0.9 1991년: GET 메소드만 지원, HTTP 헤더가 없음 👉🏻 HTTP/1.0 1996년: 메소드, 헤더 추가 👉🏻 HTTP/1.1 1997년: 가장 많이 사용되며 우리에게 가장 중요한 버전 RFC2068 (1997) - RFC2616 (1999) - RFC7230~7235 (20..

    [Tomcat] 서비스 중지 및 netstat에도 포트 확인되지 않는데 포트를 사용할 수 없다고 뜰 때

    톰캣을 켜는데 포트를 사용 중이라는 에러 메시지가 떴다. 익숙하지 ㅋ 하면서 cmd의 netstat를 확인했는데 사용 중인 port/pid 발견되지 않았다. 눈물을 머금고 이 방법, 저 방법 찾다가 며칠 동안 포트를 바꾼 채로 그냥 사용했는데 우연찮게 방법을 찾아서 정리할 겸 쓰는 포스팅 1. 포트 사용 중 에러 발생 2. [ Win + R ] msconfig 실행 후 Tomcat 관련이 있는지 1차 확인 ▶ 모든 Microsoft 서비스 숨기기를 체크 후 진행하면 더욱 찾기 편함 3. [ Win + R ] services.msc 실행 후 Tomcat 관련이 있는지 2차 확인 ▶ 나의 경우 여기서 Apache Tomcat 7.0 Tomcat7이라는 이름으로 등록되어 있는 서비스를 찾을 수 있었음! 아마...