728x90
반응형
SMALL

2024/12/05 4

SQL Injection과 방지 방법

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

보안 2024.12.05

테스트와 유지보수

1. 단위 테스트(Unit Test)와 통합 테스트단위 테스트(Unit Test)단위 테스트란?프로그램을 이루는 가장 작은 단위(기능)를 각각 테스트하는 과정입니다.주로 한 함수나 한 메서드가 제대로 작동하는지 확인합니다.왜 필요한가?각 기능이 정확히 동작하는지 빨리 확인할 수 있습니다.문제를 초기에 발견해 수정 비용을 줄일 수 있습니다.쉽게 말하면:전자제품 조립 예시: TV를 만들기 전에, 전원 버튼과 볼륨 버튼이 제대로 작동하는지 각각 따로 테스트해 보는 것과 같습니다.예제 코드 (Python)python코드 복사# 예제: 덧셈 함수def add(a, b): return a + b# 단위 테스트def test_add(): assert add(2, 3) == 5 # 성공 assert ..

소프트웨어 설계 원칙

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

소프트웨어 개발 방법론

1. 애자일(Agile)과 폭포수(Waterfall)폭포수(Waterfall)폭포수가 흐르듯이 각 단계를 순차적으로 진행하는 개발 방법론입니다.각 단계가 끝난 후에 다음 단계로 넘어가므로 뒤로 돌아가 수정하기 어렵습니다.개발 단계 (예시):요구사항 정의: 고객의 요구사항을 문서로 작성.설계: 소프트웨어의 구조를 설계.구현: 설계한 구조를 따라 프로그램 작성.테스트: 프로그램이 제대로 작동하는지 검증.배포: 완성된 프로그램을 사용자에게 전달.장점:문서화가 잘 되어 있어 체계적이고 관리가 쉽습니다.초기 계획대로 진행되므로 큰 프로젝트에 적합합니다.단점:중간에 요구사항이 바뀌면 대응하기 어렵습니다.모든 단계를 끝낸 후에야 결과물을 확인할 수 있어 유연성이 부족합니다.쉽게 말하면:폭포수 방법론은 "단계별로 차근..

320x100
반응형
LIST