K
KRYFT Problem Bank
보안 보통 코딩

SQL 인젝션 방어

취약한 코드를 SQL 인젝션으로부터 안전하게 수정

25분
80점
#3694

문제 설명

아래의 취약한 코드를 SQL 인젝션 공격으로부터 안전하게 수정하세요.

취약한 코드

def get_user(username):
    query = f"SELECT * FROM users WHERE username = '{username}'"
    return db.execute(query)

def search_products(name, min_price, max_price):
    query = f"SELECT * FROM products WHERE name LIKE '%{name}%'"
    if min_price:
        query += f" AND price >= {min_price}"
    if max_price:
        query += f" AND price <= {max_price}"
    return db.execute(query)

요구사항

  • Prepared Statement / Parameterized Query 사용
  • 입력 값 검증 추가
  • 에러 메시지에서 민감한 정보 노출 방지
  • 최소 권한 원칙 적용 고려

평가 기준

  • SQL 인젝션 완전 차단
  • 코드 가독성 유지
  • 기능 동일성 보장
실행 버튼을 눌러 코드를 실행하세요.