웹사이트 보안 XSS란 무엇인가? Cross-Site Scripting 기본 개념과 동작 방식
·
Programing/보안
웹 보안에서 자주 언급되는 위협 중 하나가 바로 "XSS"입니다. 이는 사용자 입력을 제대로 처리하지 못한 결과로 발생하며, 공격자가 악성 스크립트를 삽입해 사용자나 시스템에 피해를 줄 수 있는 위험한 취약점입니다. 특히 XSS는 OWASP Top 10에서 꾸준히 상위권을 차지하고 있으며, 보안을 고려한 웹 개발에서 반드시 인지하고 대응해야 할 핵심 항목으로 평가됩니다.A. XSS의 정의"XSS"는 "Cross-Site Scripting"의 약자입니다. 다만 CSS와 혼동을 피하기 위해 약어로는 XSS로 표기합니다. XSS는 공격자가 악성 스크립트를 웹페이지에 삽입하여, 해당 페이지를 열람한 사용자의 브라우저에서 의도하지 않은 자바스크립트가 실행되도록 만드는 공격 기법입니다. 이로 인해 쿠키 탈취, 세션..
엑셀/스프레디시트에서 숫자를 한글로 표기하는 방법 총정리 (Excel to Hangul Conversion)
·
Programing
연관글2025.04.18 - [Programing/javascript] - 💰 숫자를 한글로 금액 단위로 표현2025.04.18 - [Programing/javascript] - 💻 숫자를 한글 숫자 표기로 변환2025.05.27 - [Programing/javascript] - JavaScript로 구현하는 금액의 영어 단위 변환 (Number to Words)2025.05.27 - [Programing/javascript] - JavaScript로 구현하는 금액 단축 표기 (K / M / B 표기법)2025.05.27 - [Programing/javascript] - JavaScript로 구현하는 게임 데미지 단위 축약 (A ~ ZZZZ)많은 직장인과 문서 실무자들이 "한글 표기법"을 선호하는 이..
Tailwind CSS로 시작하는 유틸리티 퍼스트 스타일링 (Tailwind Getting Started)
·
Programing/CSS
https://tailwindcss.com/ Tailwind CSS - Rapidly build modern websites without ever leaving your HTML.Tailwind CSS is a utility-first CSS framework for rapidly building modern websites without ever leaving your HTML.tailwindcss.com 웹 개발 환경에서 "Tailwind CSS"는 빠르게 인기를 얻고 있는 CSS 프레임워크입니다. 기존의 CSS는 별도의 파일에서 스타일을 정의하고, 이를 HTML 클래스와 연결하는 방식이 일반적이었지만, Tailwind는 완전히 다른 접근 방식을 제시합니다. 바로 "유틸리티 퍼스트(Utility-f..
px, em, rem? 헷갈리는 CSS 단위 정리 (CSS Units Guide)
·
Programing/CSS
웹 페이지를 디자인할 때 빠지지 않는 것이 바로 텍스트와 레이아웃의 크기입니다. 이때 사용하는 CSS 단위는 디테일한 표현을 위한 핵심 요소입니다. 하지만 "px", "em", "rem" 같은 단위를 정확히 이해하지 못하면 디자인이 화면마다 다르게 보이거나, 접근성에 취약한 결과를 낳을 수 있습니다. 이 글에서는 각 단위의 특징과 실전 사용법을 자세히 정리합니다.1. "px" (픽셀)"px"는 디지털 화면에서 고정된 크기를 의미하는 "절대 단위"입니다. 가장 직관적이고 예측 가능한 단위로, 많은 디자이너와 개발자들이 익숙하게 사용하는 방식입니다.예를 들어 "16px"로 폰트 크기를 설정하면, 해당 텍스트는 어떤 상황에서도 16개의 화면 픽셀 높이로 표시됩니다. 이는 정밀한 위치 조정이 필요하거나 작은 아..
개발 중 자주 만나는 CORS 오류와 해결법 정리 (CORS Error in Web Development)
·
Programing
CORS 오류란 무엇인가요?"CORS(Cross-Origin Resource Sharing) 오류"는 웹 개발 과정에서 프론트엔드와 백엔드가 다른 도메인에서 실행될 때 자주 발생하는 보안 관련 문제입니다. 브라우저는 보안상의 이유로 동일 출처(Same-Origin) 정책을 따릅니다. 즉, 현재 페이지를 로드한 출처(도메인, 프로토콜, 포트)가 아닌 외부 출처로의 요청에 대해서는 제한을 걸게 됩니다.이러한 제한은 보안 강화를 위한 조치지만, 실제 개발 환경에서는 프론트엔드와 백엔드가 서로 다른 서버에 위치해 있는 경우가 많기 때문에 문제를 일으킬 수 있습니다. 이때 발생하는 것이 바로 "CORS 정책 위반"입니다.언제 발생하나요?다음과 같은 상황에서 CORS 오류가 발생하는 경우가 많습니다:"로컬 개발 중..
JavaScript로 배우는 유클리드 호제법 (GCD with Euclidean Algorithm)
·
Programing/Algorithm
유클리드 호제법이란?"유클리드 호제법(Euclidean Algorithm)"은 두 자연수의 "최대공약수(Greatest Common Divisor, GCD)"를 효율적으로 구하는 고전적인 수학 알고리즘입니다. 이 방식은 기원전 유클리드가 『기하학 원론』에서 소개한 방법으로, 간단하면서도 강력한 계산 원리를 기반으로 합니다. 알고리즘 문제 풀이뿐만 아니라 실제 시스템 설계나 암호 알고리즘에서도 활용되는 등, 실무와 이론 양쪽에서 중요한 위치를 차지하고 있습니다.핵심 아이디어는 다음과 같습니다:두 수 A, B가 있을 때 (단, A > B), A를 B로 나눈 나머지를 R이라고 하면,A와 B의 최대공약수는 곧 B와 R의 최대공약수와 동일합니다.이 과정을 B가 0이 될 때까지 반복하면, 마지막에 남는 수가 GCD..
JavaScript로 이해하는 프림 알고리즘 (Prim’s Minimum Spanning Tree)
·
Programing/Algorithm
프림 알고리즘이란?"프림 알고리즘(Prim's Algorithm)"은 "최소 신장 트리(Minimum Spanning Tree)"를 찾기 위한 대표적인 방법 중 하나입니다. 이 알고리즘은 하나의 정점에서 시작해, "가장 가까운 정점"을 차례로 선택하며 트리를 확장해나가는 방식으로 동작합니다. 크루스칼 알고리즘이 "간선 중심(edge-based)"이라면, 프림은 "정점 중심(vertex-based)"이라는 점에서 구별됩니다.작동 방식 요약프림 알고리즘은 다음과 같은 단계로 작동합니다:임의의 시작 정점을 선택합니다.해당 정점과 인접한 간선 중에서 가장 가중치가 작은 간선을 선택합니다.선택된 간선으로 연결된 정점을 방문하며 트리에 포함시킵니다.방문하지 않은 정점들 중에서 트리에 연결할 수 있는 최소 비용의 간..
JavaScript로 이해하는 크루스칼 알고리즘 (Minimum Spanning Tree)
·
Programing/Algorithm
크루스칼 알고리즘이란?"크루스칼 알고리즘(Kruskal's Algorithm)"은 그래프 이론에서 "최소 신장 트리(Minimum Spanning Tree, MST)"를 찾기 위해 널리 사용되는 대표적인 "그리디 알고리즘"입니다. 최소 신장 트리는 주어진 모든 정점을 연결하면서, 간선의 전체 가중치 합이 최소가 되는 트리입니다.크루스칼 알고리즘은 모든 간선을 가중치 기준으로 정렬한 다음, 작은 가중치부터 차례대로 간선을 선택해나가되, 사이클을 만들지 않도록 관리합니다. 이 과정에서 "사이클 여부 확인"을 위해 "Union-Find(유니온-파인드)" 자료구조가 사용됩니다.핵심 절차크루스칼 알고리즘은 다음과 같은 단계를 따릅니다:간선 정렬: 그래프의 모든 간선을 가중치 기준으로 오름차순 정렬합니다.Union..
JavaScript로 이해하는 병합 정렬 (Merge Sort Algorithm)
·
Programing/Algorithm
병합 정렬이란?"병합 정렬(Merge Sort)"은 "분할 정복" 전략을 기반으로 하는 효율적인 정렬 알고리즘입니다. 이 알고리즘은 입력 배열을 더 작은 하위 배열로 재귀적으로 나눈 후, 각 하위 배열을 정렬하고, 다시 병합하면서 전체 배열을 정렬하는 방식으로 동작합니다. 특히 "병합 정렬"은 안정 정렬(stable sort)에 해당하며, 입력 배열의 원소 순서가 동일한 값일 경우에도 유지된다는 특성을 가집니다. 또한 최악의 경우에도 시간 복잡도가 일정하여 매우 안정적인 성능을 보입니다."안정 정렬"이란, 값이 같은 항목이 있을 때 원래의 입력 순서를 그대로 유지하는 정렬을 말합니다. 예를 들어 이름과 점수를 함께 정렬하는 상황에서, 점수가 같은 학생들의 이름 순서를 유지할 수 있는 정렬 방식이 안정 정..
JavaScript로 이해하는 회의실 배정 문제 (Meeting Room Scheduling)
·
Programing/Algorithm
회의실 배정 문제란?"회의실 배정 문제"는 여러 개의 회의 요청이 주어졌을 때, 겹치지 않도록 회의 일정을 구성하거나 회의실을 최소한으로 사용하여 모든 회의를 수용하는 문제입니다. 문제는 크게 두 가지 유형으로 나눌 수 있습니다:가능한 한 많은 회의를 하나의 회의실에서 진행하기모든 회의를 수용하기 위해 필요한 회의실의 최소 개수 구하기1. 그리디 방식: 하나의 회의실에 최대한 많은 회의 배정핵심 아이디어"종료 시간"을 기준으로 회의 목록을 오름차순 정렬합니다.이전 회의가 끝난 이후에 시작하는 회의만 선택하여 최대한 많은 회의를 배정합니다.JavaScript 예제 코드function scheduleMeetings(meetings) { // 종료 시간을 기준으로 정렬 (가장 빨리 끝나는 회의를 우선 선택하..