전체 글 229

XSS 방지책 (ReactJS)

1. 🛑 dangerouslySetInnerHTML의 위험성React의 자동 이스케이프 기능을 무력화시키고 사용자 입력에 대한 XSS 공격을 허용하는 코드입니다.JavaScript // 사용자 입력(악성 스크립트)이라고 가정const userInput = ""; function RiskyComponent() { return ( // ❌ 경고: 자동 이스케이프가 비활성화되어 스크립트가 실행됩니다. );}2. ✅ 안전한 대안: DOMPurify를 사용한 HTML 정제신뢰할 수 없는 HTML을 렌더링해야 할 경우, DOMPurify 라이브러리를 사용하여 **악성 코드를 제거(정제/Sanitize)**한 후 삽입해야 합니다.Bash # 💡 DOMPurify 설치 (React 프로젝트에서)np..

Web Security 2025.12.02

CSRF (Cross-Site Request Forgery) attack

🔐 CSRF 공격이란?CSRF(Cross-Site Request Forgery, 사이트 간 요청 위조)는 사용자가 원하지 않는 요청을 자신의 계정으로 보내게 만드는 공격입니다.조금 어렵게 들리지만, 한 문장으로 정리하면 이렇습니다:“내 로그인 상태를 악용해서, 공격자가 시킨 행동을 내가 한 것처럼 서버에 보내는 공격”예를 들어, 내가 은행 사이트에 로그인한 상태라면, 공격자는 나를 속여 내 계정으로 돈을 보내거나, 비밀번호를 바꾸는 요청을 자동으로 실행시킬 수 있습니다.💥 실제로 어떻게 공격이 일어날까? (간단 예시)📌 상황 설정당신은 A 은행 사이트에 로그인한 상태새 탭에서 뉴스 사이트를 열어 기사 하나를 클릭하지만 그 뉴스 사이트 안에는 공격자가 몰래 심어놓은 HTML 코드가 들어 있음📌 공격..

Web Security 2025.12.02

크로스 사이트 스크립팅 (Cross-Site Scripting, XSS)

🔥 크로스 사이트 스크립팅(XSS) 완전 이해하기크로스 사이트 스크립팅(Cross-Site Scripting, XSS)은공격자가 신뢰할 수 있는 웹사이트에 악성 스크립트를 삽입하고, 이를 다른 사용자의 브라우저에서 실행시키는 웹 보안 취약점입니다.이를 통해 공격자는 다음과 같은 행동을 할 수 있습니다:사용자의 세션 쿠키 탈취계정 권한을 가로채거나 개인 정보 수집웹 페이지 내용을 변경악성 사이트로 자동 리디렉션등, 사용자를 속에서 보이지 않게 공격할 수 있는 매우 위험한 방식입니다.🔎 XSS 공격의 종류XSS 공격은 모두 “브라우저에서 악성 JavaScript를 실행한다”는 공통 목표가 있습니다.하지만 그 스크립트가 어디에서 기원하는지에 따라 종류가 달라집니다.아래 세 가지가 가장 대표적입니다 👇1️..

Web Security 2025.11.30

50 American Idioms in 60 Minutes

https://youtu.be/FVQChiYcVXU?si=DhhuOPigkUenSHca 1. twist (someone's) arm억지로 설득하다A: Come on, join us tonight!B: Fine, you twisted my arm.2. up (someone's) alley취향에 딱 맞다A: This movie is right up your alley.B: Really? Then I’ll watch it.3. under the weather몸이 좀 안 좋다A: You look tired.B: Yeah, I’m feeling a bit under the weather.4. make ends meet생계를 유지하다A: How’s the new job?B: It’s okay. Just trying..

youtube english 2025.11.25

SQL Injection (SQLi)

SQL 인젝션은 가장 오래되었으면서도 여전히 널리 발생하는 보안 취약점 중 하나입니다. 사용자가 입력하는 값에 악의적인 SQL 코드를 주입해 웹 애플리케이션의 데이터베이스 동작을 조작할 때 발생하며, 이를 통해 사용자 이름·비밀번호·금융 기록 같은 민감한 정보에 무단으로 접근할 수 있습니다. 더 나아가 데이터베이스의 내용을 수정하거나 삭제하는 등 시스템을 완전히 제어할 수 있는 심각한 결과를 초래할 수 있습니다. SQL 인젝션은 어떻게 일어나나?SQL 인젝션은 사용자 입력을 제대로 정제하지 않을 때 발생합니다. 웹 애플리케이션이 사용자로부터 받은 값을 검증·바인딩하지 않고 그대로 SQL 쿼리에 포함하면, 공격자는 그 입력값을 조작해 쿼리의 구조 자체를 바꿀 수 있습니다. 결과적으로 원하지 않는 조건이 추..

Web Security 2025.10.30

Color Transform

이미지의 각 픽셀에 들어있는 R, G, B 값을 새로운 R′, G′, B′ 값으로 변환하려면 Color Transform(색 변환) 기법을 고려할 수 있습니다.OpenCV는 내부적으로 BGR 순서를 사용하므로 예제를 읽을 때 채널 순서에 주의하세요.예시(스캔된 채널의 최대값이 다음과 같을 때 — OpenCV 배열은 BGR 순서):R 채널 최댓값 = (10, 10, 230) G 채널 최댓값 = (10, 230, 10) B 채널 최댓값 = (230, 10, 10) 목표: 스펙트럼(명도·색분포)을 넓혀 대비를 개선하고 싶다면, 각 채널의 타겟 값을 다음처럼 조정할 수 있습니다.목표 R = (1, 1, 250) 목표 G = (1, 250, 1) 목표 B = (250, 1, 1) 이렇게 채널별로 값을 재배치..

opencv 2025.10.30

Transformer (GPT) 가장 쉽게 이해하기 - Part 2

GPT2 - Small 모델의 예 (GPT2 - Small) Multi Block과 하나의 Block 내에서의 Multi-head Attention 아래는 내 나름대로 궁금했던 점들을 해소한 후에 간소하게 정리한 다이어그램이다. 실질적으로는 중간 중간에 세부 처리가 들어가는 경우가 있다. 입력으로 "I am a" 있을 경우 GPT는 다음에 올 가장 적절한 단어(토큰)을 제시해야 한다. ・입력은 토큰으로 분리되고 다시 Embedding으로 768 차원으로 변환된다. (그 후엔 Positioning Embedding은 생략됐다.)・그 후 12개의 Block(GPT2-Small model의 경우)에 전달된다.(Dropout과 Normalization은 생략됐다.)・각 12개의 Block은 학습(Train)에 ..

CrewAi Flows - 개념편

데코레이터@start()kickoff 시 맨 처음 실행되는 메서드위에 데코레이션@listen(method)파라미터로 지정된 method의 실행이 끝나자 마자 실행되는 메세드위에 데코레이션 @listen(or_(metho1, metho2, ...)파라미터로 지정된 메서드가 각각 끝나면 실행되는 메서드 @listen(and_(method1, method2, ...)파라미터로 지정된 메서드들이 모두 끝나야 실행되는 메서드@router(method)@listen 과 같지만 데코레이션된 메서드는 if .. else .. 로 다르게 리턴을 해야한다.그러면 다음 넘겨받는 메서드들은 @listen("결과값1") @listen("결과값2") 등으로 데코레이션 해서 처리. state 조건 로직 라우터 main.py 에서..

CrewAi Flows - 개요, 설치방법

CrewAI Flows는 CrewAI 내의 기능으로, 구조화된 이벤트 기반 AI 워크플로를 구축하기 위한 오케스트레이션 계층(Orchestration Layer) 역할을 합니다.CrewAI가 자율적인 에이전트 팀(“Crews”)을 생성하기 위한 프레임워크를 제공한다면, Flows는 여기에 제어, 상태 관리(State Management), 그리고 여러 개의 Crew나 단순한 LLM 호출들을 하나의 조직화된 자동화 프로세스로 결합할 수 있는 기능을 추가합니다.즉, CrewAI는 AI 에이전트와 팀을 구축하기 위한 기반 프레임워크이고, Flows는 그 프레임워크 안에서 이러한 팀들과 로직의 실행 순서를 관리하고 제어하기 위한 구체적인 기능입니다. 인스톨※ Python 버젼의 제한 : Python >=3.10..