목록전체 글 (51)
백엔드 개발자
다양한 공격 기법1. Cross-Site Scripting (XSS)공격대상 : 사용자 => 사용자가 서버를 신뢰한다는 점을 악용.XSS는 공격자가 악성 스크립트를 웹 애플리케이션에 삽입하여 사용자의 브라우저에서 실행되도록 만드는 공격이다. 이를 통해 공격자는 사용자의 세션 쿠키를 탈취하거나, 브라우저에서 악성 명령을 실행하여 데이터 노출, 계정 탈취 등을 유도할 수 있다.XSS는 주로 다음과 같은 방식으로 발생한다:Stored XSS: 공격자가 서버에 악성 스크립트를 저장하고, 다른 사용자가 이를 로드하면서 실행된다.Reflected XSS: 사용자가 클릭한 URL에 포함된 악성 스크립트가 브라우저에서 즉시 실행된다.DOM-based XSS: 클라이언트 측 코드에서 DOM 조작을 통해 악성 스크립트가 ..
동기(Synchronous)- 작업을 순차적으로 실행한다.- 호출자가 작업 완료를 기다리며, 작업이 끝난 후에만 다음 작업을 진행한다.- 코드가 단순하고 직관적이지만 앞 작업이 완료될때까지 기다려야 한다.비동기(Asynchronous)- 호출자가 작업을 요청한 후 결과를 기다리지 않고 다른 작업을 수행한다.- 예: 네트워크 요청에서 비동기 콜백을 설정하여 응답 도착 시 처리.- 호출자가 대기하지 않으므로 효율적이지만 콜백과 상태 관리로 코드가 복잡해질 수 있다.동기와 비동기는 작업의 흐름과 실행 순서를 설명하는 개념이다. 동기는 실행 시점이 일치하기 때문에 작업이 끝나는 동시에 다른 작업이 시작된다.반면 비동기는 실행 시점이 다를 수 있다.기본적으로 JAVA에서는 동기이다. 예를 들어 어..
1. 트랜잭션(Transaction)이란?트랜잭션은 데이터베이스에서 수행되는 하나의 작업 단위로, 데이터베이스의 상태를 일관성 있게 유지하고, 여러 작업을 하나의 원자적 작업으로 묶어 처리할 수 있도록 한다. 즉, 트랜잭션 내에서 여러 쿼리가 실행되며, 그 결과가 모두 성공적으로 처리되거나, 아무것도 처리되지 않은 상태로 롤백되어야 한다.하나의 논리적인 작업 단위라고 할 수 있다.A가 B에게 돈을 송금한다.라는 작업은 A의 계좌를 확인하고, 돈을 인출하고, B의 계좌를 확인하고, 돈을 더하는 작업으로 이루어질 수 있을 것이다.실제 작업과 다를 수 있지만 간단하게 나타내면 이렇게 표현할 수 있을 것이다.이런 트랜잭션은 다음과 같은 ACID 속성을 만족해야 한다:Atomicity (원자성): 트랜잭션은 모든..
HTTP란 무엇인가?HTTP(Hypertext Transfer Protocol)는 웹 상에서 클라이언트와 서버 간 데이터를 교환하기 위한 규칙이자 프로토콜입니다.HTTP는 신뢰할 수 있는 전송 프로토콜(TCP) 위에서 동작하며, 클라이언트-서버 모델을 따릅니다. HTTP의 확장성 덕분에 현재는 하이퍼텍스트 문서 뿐만 아니라 이미지와 비디오, JSON 등 다양한 데이터 포맷을 지원합니다.OSI 7계층에서 HTTP의 위치HTTP는 애플리케이션 계층(OSI 7계층의 7층)에 위치합니다. OSI 모델에서 각 계층은 특정 역할을 담당하며, HTTP는 데이터를 직접 전달하는 것이 아니라 하위 계층을 통해 전송되기 때문에 네트워크의 상세 동작을 이해하려면 하위 계층인 전송 계층(TCP/IP 4계층의 전송 계층)도 함..
IP는 인터넷 프로토콜(IP, Internet Protocol)로 컴퓨터 네트워크에서 데이터를 패킷(packet) 단위로 송수신하기 위한 규칙이다.데이터를 목적지까지 안전하고 효율적으로 전달하는 데 필요한 핵심 프로토콜로, 인터넷을 비롯한 네트워크 통신의 기본 원리를 규정한다.OSI 7 계층에서 3계층인 네트워크 계층에서 사용하는 대표적인 프로토콜이다.IP 주소와 라우팅이때 네트워크 상에서 호스트들은 고유한 IP 주소로 식별되고, 출발지 IP 주소에서 목적지 IP 주소까지 전달하는데 라우터를 거치는 과정인 라우팅이 일어난다.IP 특징이런 IP의 특징은 비신뢰성 과 비연결성 이다.기본적으로 데이터가 손실되거나 잘못된 순서로 도착할 수 있으며, 데이터를 전송하기 전에 발신자와 수신자 간에 연결을 설정하지 않..
1. UDP의 개요사용자 데이터그램 프로토콜, User Datagram ProtocolUDP는 비연결형 프로토콜로, 송신자가 데이터를 수신자에게 보내기 전에 별도의 연결을 설정하지 않습니다. TCP와 비교하면 상대적으로 간단한 구조로, 데이터를 빠르게 전송하는 것을 목표로 합니다. 신뢰성보다 속도가 중요한 애플리케이션에서 주로 사용됩니다. TCP의 3-way handshake와 같은 연결 설정 과정이 없으며, 데이터 전송이 매우 빠르게 이루어집니다. 또한, UDP는 데이터의 신뢰성을 보장하지 않기 때문에 패킷 손실, 중복, 순서 뒤바뀜 등을 감지하거나 복구하지 않습니다.주요 특징:비연결성 (Connectionless): 데이터를 전송하기 전에 연결을 설정하지 않으며, 수신자의 응답을 기다리지 않고 계속 ..
1. TCPTCP는 연결 지향적이며, 신뢰성 있는 데이터 전송을 보장하는 전송 계층(Transport Layer)의 프로토콜입니다.TCP는 IP위에서 동작하는데, IP가 데이터를 목적지로 라우팅하는 역할을 한다면, TCP는 그 데이터가 정확하고 순서대로 도착하도록 관리하는 역할을 합니다. TCP는 패킷 손실, 패킷의 순서 뒤바뀜, 혼잡한 네트워크 상황 등 다양한 네트워크 문제를 해결하기 위해 고안된 여러 메커니즘을 포함하고 있습니다.TCP의 동작 흐름을 크게 보면 연결을 생성하고, 데이터 전송, 연결 종료의 순으로 이루어집니다.2. 3-Way Handshake (3단계 핸드셰이크)TCP는 연결 지향적 프로토콜이기 때문에, 데이터를 전송하기 전에 송신자와 수신자 간에 연결을 설정하는 과정이 필요합니다.이 ..
프로젝트 성능 개선을 위해 부하테스트 툴인 JMeter를 활용했다.그리고 특정 API에 대해서만 오류 80% 정도로 아주 높게 측정되었고, 해당 api를 보니 외부 api를 호출하는데 매 요청마다 호출하고 있었다. 이건 그날의 뉴스 정보를 가져오는 api라 캐싱하여 사용하기 위해 Redis를 이용하였다.그런데 오히려 성능이 더 떨어지고 다른 api들까지 오류가 났다.Redis를 살펴보니 메모리 사용률이 80퍼 였다.... // 이 명령어로 메모리 정보를 확인할 수 있다. redis-cli info memory //대략 이런 정보들을 확인할 수 있다. _human이 붙은게 우리가 보기 쉬운 형태로 변환해 준 값이다. 기본은 바이트 단위이다. # Memory used_memory:..