728x90
반응형
SMALL

예제 코드 7

[보안] XSS와 CSRF 차이점 완벽 정리: 개념, 공격 원리와 방어 방법 예제 코드 포함

XSS (Cross-Site Scripting)와 CSRF (Cross-Site Request Forgery)XSS와 CSRF는 모두 웹 애플리케이션에서 발생하는 보안 취약점이지만, 공격 방식과 목표가 다릅니다.1. XSS (Cross-Site Scripting)정의XSS는 공격자가 웹 페이지에 악성 스크립트(JavaScript 등)를 삽입하여 다른 사용자의 브라우저에서 실행되도록 하는 공격입니다. 이를 통해 사용자의 세션, 쿠키, 또는 민감한 정보를 탈취하거나, 악성 코드 실행이 가능합니다.목표사용자 데이터를 탈취: 세션 쿠키, 로그인 정보 등.악성 코드 실행: 피해자의 브라우저에서 악성 동작 수행.웹 페이지 변조: 사용자에게 잘못된 정보 제공.유형Stored XSS: 악성 스크립트가 서버에 저장되어 ..

보안 2024.12.08

[보안] 대칭키와 비대칭키 암호화 완벽 비교: 개념, 차이점, AES와 RSA 예제 코드 포함

1. 대칭키 암호화정의하나의 "공통된 키"를 사용하여 데이터를 암호화(Encrypt)하고 복호화(Decrypt)하는 방식입니다.암호화와 복호화 과정에서 같은 키를 사용하기 때문에 "대칭"이라고 부릅니다.특징속도: 암호화와 복호화 속도가 빠름.보안 문제: 키가 노출되면 데이터를 해독할 수 있으므로 키를 안전하게 공유해야 함.사용 사례: 대량의 데이터를 암호화하거나 파일을 보호할 때 사용.장단점장점단점암호화 속도가 빠름키 공유 과정에서 보안 문제 발생구현이 간단키를 안전하게 관리하기 어렵음대량 데이터 처리에 적합키를 여러 사람과 공유하기 어렵음예시 알고리즘AES (Advanced Encryption Standard): 현재 가장 많이 사용되는 안전한 대칭키 암호화 알고리즘.DES (Data Encryptio..

보안 2024.12.08

[보안] SQL Injection 완벽 가이드: 개념, 공격 원리와 방지 방법 예제 코드 포함

구체적인 사례로그인 시스템의 취약점 이용일반적으로 사용자가 로그인할 때, 입력한 사용자 이름과 비밀번호는 다음과 같은 SQL 쿼리로 데이터베이스에 전달됩니다:SELECT * FROM users WHERE username = '입력한_사용자이름' AND password = '입력한_비밀번호';악의적인 입력값 삽입공격자가 로그인 입력창에 다음과 같은 값을 넣습니다:SQL 쿼리는 이렇게 바뀝니다:SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';bash코드 복사사용자 이름: ' OR '1'='1비밀번호: 아무 값SQL Injection 효과쿼리를 해석하면 OR '1'='1'은 항상 참(True)이기 때문에, 데이터베이스는 인증 없이 모든..

보안 2024.12.05

[소프트웨어 개발] 소프트웨어 설계 원칙 완벽 정리: DIP, DRY, KISS 개념과 예제 코드

1. 의존성 역전 원칙(DIP: Dependency Inversion Principle)의미의존성 역전 원칙은 "상위 수준의 모듈(중요한 역할을 하는 부분)이 하위 수준의 모듈(세부적인 부분)에 의존하지 않도록 설계하는 것"입니다. 대신 둘 다 인터페이스(공통 규칙)에 의존하도록 설계합니다.쉽게 말하면큰 그림을 그리는 관리자(상위 수준 모듈)는 세부적인 일을 하는 사람(하위 수준 모듈)에 직접 의존하지 않습니다.대신, "일하는 규칙(인터페이스)"을 정하고, 관리자와 일꾼 모두 이 규칙을 따르게 합니다.즉, 큰 그림과 세부 사항이 서로 독립적으로 움직일 수 있도록 설계합니다.왜 중요한가?세부적인 내용이 바뀌어도 큰 그림(상위 수준 모듈)에 영향을 주지 않기 때문에 코드의 유지보수성이 좋아집니다.예제 코드 ..

[데이터베이스] 샤딩(Sharding)과 파티셔닝(Partitioning) 완벽 비교: 개념, 차이점, 예제 코드와 활용 사례

1. 파티셔닝 (Partitioning)개념:파티셔닝은 하나의 데이터베이스 내에서 데이터를 여러 파티션으로 나누어 저장하는 방식입니다. 데이터가 너무 많아지면 한 테이블에 모든 데이터를 저장하는 것이 비효율적이므로, 데이터를 나누어 테이블을 관리하는 방식입니다. 파티셔닝을 통해 특정 조건에 맞는 데이터만 조회하여 데이터 접근 속도를 높이고 성능을 최적화할 수 있습니다.파티셔닝의 종류:범위 파티셔닝 (Range Partitioning): 특정 범위에 따라 데이터를 나누는 방법입니다. 예를 들어, 날짜 기준으로 데이터를 분할하여 특정 연도나 월의 데이터를 빠르게 조회할 수 있도록 합니다.해시 파티셔닝 (Hash Partitioning): 특정 열의 해시 값을 기준으로 데이터를 나누는 방식입니다. 해시 함수에..

데이터베이스 2024.10.29
320x100
반응형
LIST