전체 글 49

리눅스 파일 권한 관리 (777, 644, chmod 개념)

1. 리눅스 파일 권한이란? 리눅스 시스템에서 파일이나 디렉토리는 단순한 저장 공간 그 이상이다. 파일에 누가 접근할 수 있는지, 어떤 작업을 할 수 있는지를 결정하는 핵심 요소가 바로 파일 권한이다. 서버를 다루거나 백엔드 개발을 하다 보면 chmod, 777, 644 같은 숫자들을 자주 만나게 되는데, 그 개념을 제대로 이해하지 않으면 보안에 취약한 설정을 하게 될 수도 있다. 리눅스는 모든 파일과 디렉토리에 대해 **소유자(owner), 그룹(group), 기타 사용자(other)**의 접근 권한을 구분한다. 이들 각각에게 읽기(read), 쓰기(write), 실행(execute) 권한을 부여할 수 있다.예시: ls -l 명령어 결과-rw-r--r-- 1 yeji yeji 1024 Mar 30 ..

컴퓨터공학 2025.03.26

VPN(Virtual Private Network)의 원리와 종류

1. VPN이란 무엇인가? VPN(Virtual Private Network)은 공용 네트워크(인터넷)를 통해 사설 네트워크처럼 안전하게 통신할 수 있도록 해주는 기술이다. 사용자와 목적지 서버 간의 연결을 암호화된 터널로 보호하여 보안성과 프라이버시를 강화한다. 📌 쉽게 말해 VPN은 공공 와이파이에서도 내 데이터가 해커에게 노출되지 않도록 가상으로 보호막을 씌워주는 역할을 한다.2. VPN이 필요한 이유 인터넷은 매우 편리하지만, 동시에 개인정보 유출, 감시, 해킹 위협에 상시 노출되어 있다. VPN은 이러한 위험을 효과적으로 방지할 수 있는 도구로, 단순히 IP를 숨기는 기능 그 이상을 제공한다. 1) 공용 와이파이에서의 보안 카페, 공항, 도서관 등에서 제공하는 무료 Wi-Fi는 대부분 암호화되..

컴퓨터공학 2025.03.26

대칭키 vs 비대칭키 암호화 개념 및 활용

1. 암호화란? 암호화(Encryption)는 데이터를 보호하기 위해 특정 알고리즘을 사용하여 원본 데이터를 변환하는 기술이다. 이를 통해 외부 공격자로부터 중요한 정보를 보호하고, 안전한 데이터 전송을 가능하게 한다. 암호화 방식은 **대칭키 암호화 Symmetric Encryption)**와 **비대칭키 암호화(Asymmetric Encryption)**로 나뉜다. 📌 암호화가 필요한 이유온라인 결제 시 카드 정보 보호개인 메시지, 이메일 보안 유지로그인 시 비밀번호 저장 및 전송 보호네트워크 통신 중 데이터 유출 방지2. 대칭키 암호화(Symmetric Encryption) 대칭키 암호화는 하나의 동일한 키(Secret Key)를 사용하여 데이터를 암호화하고 복호화하는 방식이다. 즉, 암호화(En..

컴퓨터공학 2025.03.19

가비지 컬렉션(GC) 원리와 메모리 관리

1. 가비지 컬렉션(GC)란? 가비지 컬렉션(Garbage Collection, GC)은 프로그래밍 언어에서 더 이상 사용되지 않는 메모리를 자동으로 정리하는 기능이다. C, C++ 같은 언어는 개발자가 직접 메모리를 할당(malloc)하고 해제(free)해야 하지만, Java, Python, C# 같은 언어는 GC를 활용하여 메모리를 자동으로 관리한다. - GC의 주요 역할불필요한 객체 삭제 → 사용되지 않는 객체를 탐색 후 자동 제거메모리 누수 방지 → 계속 사용되지 않는 메모리가 남아있는 문제 해결프로그램 안정성 향상 → 명시적인 메모리 해제 오류를 줄여 안정적인 실행 환경 제공2. 가비지 컬렉션의 동작 방식 GC는 프로그램에서 더 이상 사용되지 않는 객체를 탐색하고 자동으로 제거한다. 하지만 모든..

컴퓨터공학 2025.03.18

쿠키(Cookie)와 세션(Session)의 차이점

1. 쿠키와 세션 개요 웹 애플리케이션에서 사용자의 로그인 상태 유지, 개인화된 정보 제공 등을 위해 **쿠키(Cookie)와 세션(Session)**이 사용된다. 두 개념은 비슷해 보이지만, 저장 위치, 보안성, 유지 방식에서 차이가 있다. ✅ 쿠키(Cookie)클라이언트(사용자 브라우저)에 저장되는 데이터사용자가 다시 방문할 때 해당 정보를 활용로그인 유지, 장바구니 기능 등에 사용✅ 세션(Session)서버에 저장되는 데이터사용자가 웹사이트를 떠나면 일정 시간이 지나 자동 삭제보안이 중요한 정보 저장에 사용2. 쿠키(Cookie)란?2-1. 쿠키의 개념 쿠키는 웹 브라우저가 저장하는 작은 데이터 파일로, 사용자의 정보를 저장하여 재방문 시 동일한 환경을 제공할 수 있도록 한다.예제: 로그인 유지, ..

컴퓨터공학 2025.03.18

JWT(JSON Web Token) 인증 방식 개념

1. JWT란? JWT(JSON Web Token)는 웹 애플리케이션에서 사용자 인증 및 권한 부여를 위해 사용되는 토큰 기반 인증 방식이다. JWT는 서버에서 발급한 토큰을 클라이언트가 저장하고, 이후 요청 시 해당 토큰을 이용해 인증을 수행하는 방식으로 동작한다. 📌 JWT의 특징토큰 기반 인증 방식 → 서버가 세션을 저장할 필요 없음 (무상태성)JSON 형식 사용 → 가볍고, 웹에서 쉽게 활용 가능디지털 서명 포함 → 토큰이 변조되지 않도록 보안 강화다양한 환경에서 사용 가능 → 웹, 모바일, 마이크로서비스 등📌 JWT 인증 방식이 필요한 이유세션 기반 인증의 문제점 해결확장성 높은 인증 시스템 구축 가능REST API와 잘 어울리는 인증 방식2. JWT의 구조JWT는 **세 부분(헤더, 페이로..

컴퓨터공학 2025.03.18

REST API란? RESTful한 설계 원칙

1. REST API란? REST API(Representational State Transfer API)는 HTTP 프로토콜을 기반으로 클라이언트와 서버가 데이터를 주고받는 방식을 의미한다. REST는 웹의 아키텍처 스타일 중 하나로, 리소스(Resource) 중심으로 설계되어 있으며 간결하고 직관적인 URL과 HTTP 메서드를 활용하는 것이 특징이다. 📌 REST API의 주요 개념리소스(Resource) → URI(Uniform Resource Identifier)로 표현됨 (/users, /posts/1 등)행동(Method) → HTTP 메서드(GET, POST, PUT, DELETE 등) 사용표현(Representation) → JSON, XML 등의 형식으로 데이터를 주고받음📌 REST ..

컴퓨터공학 2025.03.17

객체지향 프로그래밍(OOP) 개념과 SOLID 원칙

1. 객체지향 프로그래밍(OOP)란? 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 **객체(Object)**를 중심으로 프로그램을 구성하는 프로그래밍 패러다임이다. 객체란 데이터(속성, 상태)와 메서드(동작, 행동)를 포함하는 독립적인 모듈을 의미하며, 객체 간의 관계를 통해 프로그램이 동작한다. 📌 OOP의 핵심 개념 객체지향 프로그래밍은 다음과 같은 4가지 개념을 기반으로 한다.캡슐화(Encapsulation)객체의 데이터를 외부에서 직접 접근하지 못하도록 보호하고, 필요한 경우 메서드를 통해 접근을 제한하는 개념**정보 은닉(Information Hiding)**을 통해 유지보수성과 보안성을 높일 수 있음예제: private, protected 접근 제어자를 ..

컴퓨터공학 2025.03.17

동적 프로그래밍(Dynamic Programming)의 개념과 예제

1. 동적 프로그래밍(Dynamic Programming)이란? 동적 프로그래밍(DP, Dynamic Programming)은 복잡한 문제를 작은 하위 문제로 나누어 해결한 결과를 저장하여 동일한 계산을 반복하지 않도록 최적화하는 알고리즘 기법이다. 특히, 부분 문제의 결과를 재사용할 수 있는 경우(Overlapping Subproblems)와 최적 부분 구조(Optimal Substructure)를 만족하는 경우에 효과적이다. 📌 핵심 개념:동일한 연산을 반복하지 않도록 결과를 저장(Memoization)작은 문제를 해결한 후 이를 조합하여 큰 문제를 해결하는 방식재귀(Top-Down) 방식과 반복(Bottom-Up) 방식이 존재2. 동적 프로그래밍이 필요한 이유 일반적인 완전 탐색(Brute For..

컴퓨터공학 2025.03.17

그래프(Graph) 자료구조와 최단 경로 알고리즘 (다익스트라, 플로이드 워셜)

1. 그래프(Graph) 자료구조란? 그래프(Graph)는 정점(Vertex)과 간선(Edge)으로 구성된 자료구조로, 객체들 간의 관계를 표현하는 데 사용된다. 정점(Vertex, 노드): 데이터를 저장하는 개체 (예: 도시, 사람, 컴퓨터)간선(Edge): 정점 간의 연결 관계를 나타내는 요소 (예: 도로, 네트워크 링크)그래프는 소셜 네트워크 분석, 지도 네비게이션, 네트워크 라우팅, 인공지능(AI) 경로 탐색 등 다양한 분야에서 활용된다.2. 그래프의 종류2-1. 방향 그래프 vs 무방향 그래프무방향 그래프(Undirected Graph): 간선의 방향이 없으며, 양방향으로 이동 가능예) A—B (A에서 B로 갈 수도 있고, B에서 A로도 갈 수 있음)방향 그래프(Directed Graph, DA..

컴퓨터공학 2025.03.16