본문 바로가기

전체 글241

YAML .데이터 직렬화 언어 예시) YAML이란? YAML은 구성 파일 작성에 자주 사용되는 데이터 직렬화 언어입니다. YAML을 yet another markup language로 생각하는 사람도 있고, YAML ain’t markup language(재귀 약어)로 생각하는 사람도 있습니다. 후자는 YAML이 문서가 아닌 데이터용임을 강조하는 말입니다. https://www.redhat.com/ko/topics/automation/what-is-yaml 다음은 구문 규칙을 보여주는 단순한 직원 기록용 YAML 파일의 예입니다. --- # An employee record name: Martin D'vloper job: Developer skill: Elite employed: True foods: - Appl.. 2023. 1. 28.
직렬화(Serialization)와 역직렬화(Deserialization) 1.마샬링의 정의 마샬링이라고도 부르는 개체 직렬화는 객체의 상태를 변환하는 과정이다. 쉽게 데이터를 메세지로 보내거나 데이터 베이스에 데이터로, 텍스트 파일로 저장할 수 있다. 데이터는 JSON, XML, Binary 형식으로 직렬화한다. 2.마샬링(Marshalling) vs 직렬화(Serialization) 마샬링은 직렬화와 비슷한 개념으로 큰 개념인 변화하는 과정을 의미한다. 직렬화의 과정에 마샬링이 포함되며 두 개를 같은 것으로 봐도 무방하다. 직렬화는 객체가 대상이지만 마샬링은 변환 자체에 의미가 있기 때문에 서로 다른 언어간의 데이터 전송은 마샬링이라고 한다. 직렬화는 객체를 바이트 스트림으로 바꾸는 것, 객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환시키는 것이다. 메모리.. 2023. 1. 20.
Type confusion vulnerabilities 1.Type confusion type confusion 취약점은 프로그램에서 사용하는 변수나 객체를 선언 혹은 초기화되었을 때와 다른 타입으로 사용할 때 발생하는 취약점이다. 개체의 유형을 확인하지 않고 사용해 논리적 오류가 발생할 수 있다. 잘못 사용했을 시 원격 코드 실행이 가능하다 2. CWE CWE-843로 등록되어 있다. CWE에 기록된 항목 설명은 다음과 같다. 제품이 호환되지 않는 유형을 사용하여 리소스에 액세스하면 리소스에 예상 속성이 없기 때문에 논리적 오류가 발생할 수 있습니다. C 및 C++와 같이 메모리 안전성이 없는 언어에서는 유형 혼동으로 인해 범위를 벗어난 메모리 액세스가 발생할 수 있습니다. 이 약점은 C에서 다양한 포함된 개체 유형이 있는 데이터를 구문 분석할 때 공용체와.. 2023. 1. 18.
4) SQL injection 및 XSS 보안 대책 상세 4. 보안 대책 4.1. SQL Injection 취약점 항목 SQL Injection 취약점 개요 공격자가 임의의 SQL 질의 문을 삽입할 수 있는 공격이다. 사용자의 입력을 SQL 질의 문에 그대로 넣어서 사용했기때문에 발생된다. 이것으로 인해 데이터 우회와 변조, 추가, 추출이 가능하다. 보안 조치 방법 - 보안 조치 방법 1. Mybatis의 경우 ${ }를 #{ }로 바꾸어 주어 SQL Injection에 대한 보안 대책을 적용한다. 2. JPA의 경우, Spring Data JPA를 사용하면 제공하는 API(save(), saveAll() 등)을 사용해 내부적으로 이미 Parameter Binding을 적용시킬 수 있다. 다만, JPA를 사용해 직접 짜는 경우엔 취약할 수 있기때문에 주의해야한.. 2023. 1. 17.
3) 게시판 개발 및 SQLi, XSS 취약점 테스트 1.1. 개발 기술서 환경 구성은 아래와 같다. 스프링 부트 Spring boot 2.7.3 빌드 프레임워크 Gradle 템플릿 엔진 Thymeleaf SQL Mapper 프레임워크 Mybatis 데이터베이스 MySQL 1.1.1. 로그인 기능 구현 [초기 화면] 1. 처음 페이지에 들어갔을 때 보이는 화면으로 로그인을 제외한 다른 기능 사용이 불가능함. [초기 화면 > 로그인] 2. 로그인 페이지(login.html)와 로그인이 성공했을 때 보이는 메인 페이지 구현. [초기 화면 > 로그인 > 메인 화면] 3. 로그인 후 메인 페이지에 진입한 것을 확인한다. 4. 로그인과 로그인을 수행하는 SQL문에 대한 소스코드이다. 4. 로그인 수행 시 세션을 name에 저장해 로그인 여부를 체크하는 interce.. 2023. 1. 16.
암호학 - 해시 함수 1.1. 해시 함수의 종류 해시 함수의 종류로는 md5, SHA-1, SHA-256, SHA-384, SHA-512, BLAKE2 등이 있다. 1. MD5: Rivest가 1991년에 만든 해시 함수로 128비트의 해시 값을 가진다. MD5 내부 구조 일부에 대한 공격 방법이 몇 개 발견되었기 때문에 더이상 사용되지 않는다. 2. SHA - SHA-1: 1995년에 제작되어 1650비트로 해시 값이 출력된다. 해시 충돌에 취약해 MD5 및 SHA-1는 2005년에 이론적으로 중단되었다, - SHA-2(224 및 256/384 및 512)는 2001년에 발표되어 가장 보편적으로 사용되고 있다. 보안 애플리케이션 및 프로토콜, 암호 화페 거래 검증, 디지털 인증서 및 기타 어플리케이션에 사용한다. - SHA.. 2023. 1. 16.
웹 서비스의 구조 1.1. 웹 서비스의 구조 1. 웹의 구조 웹은 www서버로 인터넷을 연결한 다수의 사용자가 웹 서비스를 할 수 있게 해주는 통로이다. 웹 환경은 서비스를 제공하는 서버와 서비스를 이용하는 클라이언트로 구성된다. 이 둘의 연결은 사용자가 URL 주소를 입력하거나 링크를 클릭할 때마다 일어나서, TCP 연결이 설정되고 클라이언트가 서버에 html 문서를 요청하면 서버는 HTTP로 해당 문서를 클라이언트에게 전송한다. 메시지 전송이 완료되는 즉시 TCP 연결이 끊기기 때문에 클라이언트가 웹 브라우저 화면에 문서를 띄울 때는 이미 서버와의 연결이 끊겨 있다. 마이크로 소프트, 구글 크롬처럼 서버가 제공하는 웹 문서를 사용자에게 보여주는 프로그램은 웹 브라우저라고 한다. HTML로 작성된 문서와 그림, 음성과 .. 2023. 1. 13.
[Spring] 스프링 입문 5 - 게시판 제작하기 1. 글 목록 보기, 새로운 글쓰기, 페이징, 글 검색 기능 구현. 2.소스코드 board.html Spring 취약점 테스트 로그인 게시판 SSTI 취약점 LFI, RFI 추가 예정 환경 구성 Spring boot 2.7.3 Gradle Thymeleaf MySQL Mybatis 게시판 검색어: 번호 제목 작성자 글쓰기 Previous Previous 제목 글쓴이 내용 검색 Side Lorem ipsum dolor sit amet, consectetur adipiscing elit.. Footer css * { box-sizing: border-box; } body { margin: 0; } /* Style the header */ .header { background-color: #f1f1f1; pa.. 2023. 1. 5.
[Spring] 스프링 입문 4 - 로그인 페이지 제작하기 1. 처음 페이지에 들어갔을 때 보이는 화면으로 로그인을 제외한 다른 기능 사용이 불가능함. 2. 로그인 페이지(login.html)와 로그인이 성공했을 때 보이는 메인 페이지 구현(index_ok). 3. 로그인과 로그인을 수행하는 SQL문에 대한 소스코드이다. 4. 로그인 수행 시 세션을 name에 저장해 로그인 여부를 체크하는 interceptor를 구현.. 소스코드 login.html 로그인 로그인 회원 가입 메인으로 login.css *{margin: 0 auto; padding: 30;} body * { padding: 0; margin: 0; box-sizing: border-box; line-height: 1; -webkit-tap-highlight-color: transparent; fo.. 2022. 12. 25.