문의하기
기술 트렌드

웹 보안 기본기 - SQL 인젝션부터 XSS까지

2022년 11월 08일 · 약 2분 소요 · 852회 조회 · 관리자

보안 없이는 웹 개발도 없다

2022년 말, 보안에 대한 글을 정리했습니다. 소규모 개발사라도 고객의 데이터를 보호할 책임이 있습니다.

SQL 인젝션

// 위험한 코드
$sql = "SELECT * FROM users WHERE email = '" . $_GET['email'] . "'";

// email = ' OR '1'='1' 을 입력하면 모든 사용자 정보 노출

// 안전한 코드 - Prepared Statement
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $_GET['email']);
$stmt->execute();
$result = $stmt->get_result();

XSS (Cross-Site Scripting)

// 위험한 코드
<p><?php echo $_GET['comment']; ?></p>

// comment = <script>alert('hack')</script> 을 입력하면 스크립트 실행

// 안전한 코드 - HTML 인코딩
<p><?php echo htmlspecialchars($_GET['comment'], ENT_QUOTES, 'UTF-8'); ?></p>

CSRF (Cross-Site Request Forgery)

사용자가 다른 사이트에 있을 때, 그 사이트에서 나도 모르게 내 은행 계좌에서 돈을 인출하도록 강요할 수 있습니다.

해결책: CSRF 토큰을 폼에 포함하고 검증합니다.

보안 체크리스트

  • 모든 입력값 검증 및 살균
  • HTTPS 사용
  • 비밀번호 암호화 (bcrypt, argon2)
  • 접근 제어 및 권한 관리
  • 민감한 데이터 암호화
  • 정기적인 보안 감사
목록으로
무료 상담