CORS, CSRF, XSS, CSP, SameSite 정리
·
개발
CORS (Cross-Origin Resource Sharing)웹에서는 보안을 위해 기본적으로 한 웹 페이지(출처 A)에서 다른 웹 페이지(출처 B)의 데이터를 직접 불러오는 것을 제한하는데 이를 '동일 출처 정책(Same-Origin Policy)' 이라고 한다. 기본적으로 브라우저는 다른 origin으로의 요청 결과를 JavaScript가 읽지 못하게 막으며, CORS는 서버가 "이 origin은 허용한다"고 명시적으로 풀어주는 방식이다. Origin이란 scheme + host + port (서브도메인도 다른 origin) CORS는 Simple Request와 Preflight 2가지가 있다. Simple Request 조건 (전부 만족 시):메서드: GET, HEAD, POST헤더: Accep..
SSH 터널링 + hosts 파일을 이용한 로컬 개발 도메인 라우팅
·
Network
새로운 개발 건이 들어왔는데, 고객사 내부 네트워크 시스템에 접근해야 했다.편하게 외부 컴포넌트라고 부르겠다. 그러나 본인 로컬에서는 고객사 내부 네트워크에 접근할 수 없었다.대신 개발 서버는 고객사 내부 네트워크와 통신이 가능하므로 테스트가 가능하다.그럼 외부 컴포넌트는 개발 서버에 배포하고만 테스트가 가능한걸까..? 오늘은 이에 관한 얘기를 해보고자 한다.SSH 터널링 + hosts 파일을 이용한 로컬 개발 도메인 라우팅현재 네트워크 구조를 보면 아래와 같다.로컬(AWS VPN 접속) -> 개발 서버 (AWS VPC 개발 네트워크) -> 외부 컴포넌트(고객사 내부 네트워크) 또한 외부 컴포넌트는 443 포트만 허용한다. 이제 로컬에서 외부 컴포넌트에 접속할 수 있는 구조를 만드는 과정을 설명해보겠다...
SQL Count & Assertion With 디버깅
·
개발
저번 포스팅과 이어지는 부분이 있습니다. https://devdebin.tistory.com/366 JPA 거짓 연관 관계 맺기(프록시)동일한 테이블의 2개의 엔티티회사 프로젝트에 아래 예시 코드와 유사한 코드가 존재한다.@Table(name = "prod")@Entityclass Prod( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0, @Column(name = "name")devdebin.tistory.com SQL Count & Assertion저번 포스팅에서는 getReferenceById를 사용해 실제 데이터를 조회하지 않고 프록시로 연관관계를 세팅했다.이 과정에서 데이터 조회하지 않는 내용을 눈으로 확인해봤는..
JPA 거짓 연관 관계 맺기(프록시)
·
개발/JPA
동일한 테이블의 2개의 엔티티회사 프로젝트에 아래 예시 코드와 유사한 코드가 존재한다.@Table(name = "prod")@Entityclass Prod( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0, @Column(name = "name") val name: String, @JoinColumn(name = "vendor_id") @ManyToOne(fetch = FetchType.LAZY) val vendor: Vendor, /** * 더 연관 관계가 있다고 가정 */)@Table(name = "prod")@Entityclass ProdForExterna..
기본으로 돌아가기
·
개발
다음은 조엘 온 소프트웨어 2장 관련 내용입니다. C 언어 관련 C 문자열은 값이 \0, 널 문자(null character) 로 끝난다.해당 방식에는 명백한 두 가지 문제점이 존재한다. 널 문자를 찾아서 문자열 끝까지 가보기 전에는 끝을 알아내는 방법이 없다.문자열 내부에는 어떤 \0 값도 포함할 수 없으므로, JPEG 그림과 같은 비정형 이진 자료를 C 문자열 내부에 저장할 수 없다. 본인이 판단하기로는 C의 일반적인 문자열 함수로 다루고 싶다면 널 문자를 사용할 수 없다는 의미인 것 같다. 해당 방식을 ASCIZ 문자열이라고 하는데, ASCII Zero-terminated의 약어다.정리하면 ASCIZ 문자열은 ASCII 문자들로 이루어지고, 끝에 널 문자 \0이 붙는 문자열을 의미한다. 책에서는..
인코딩(Encoding) 이란
·
OS
1. 인코딩이란 인코딩이란 사람이나 컴퓨터가 이해할 수 있는 형태로 정보를 변환하는 것이다. 문자 인코딩 정의와 단계 컴퓨터는 문자 그대로를 이해하지 못한다. 숫자(이진수)로만 이해할 수 있다.그래서 문자를 숫자로 바꾸는 규칙이 필요한데, 이를 문자 인코딩이라고한다. 문자 선택예: 사용자가 “A”를 입력.문자표(Character Set)에서 코드값 찾기각 문자에는 고유한 번호가 있음.예: ASCII 표에서 A = 65이진수 변환65(10진수) → 01000001(2진수)저장 또는 전송파일이나 네트워크를 통해 01000001이 전송됨.복호화(Decoding)받는 쪽에서 같은 문자표를 이용해 01000001 → “A”로 변환 네트워크 인코딩 정의와 단계 인터넷으로 데이터를 주고 받을 때 글자나 파일을 전송 ..