금요일 밤 11시, 작은 쇼핑몰을 운영하는 개발자에게 전화가 왔다고 해보자. 관리자 페이지에 접속했더니 상품 목록이 텅 비어 있었다. 서버는 멀쩡했고, 디스크도 넉넉했고, 에러 로그에도 이상이 없었다. 다만 접속 로그에 이런 요청이 하루 종일 찍혀 있었다. ``` GET /product.php?id=12%20OR%201=1-- ``` 숫자 하나가 들어와야 ...

사용자 입력을 SQL에 직접 이어붙이면 SQL 인젝션에 노출된다. 결론부터 말하면 mysqli의 prepared statement(준비된 쿼리) 를 쓰면 값과 쿼리 구문이 분리되어 대부분의 인젝션을 원천 차단할 수 있다. 위험한 코드 ```php // 절대 이렇게 쓰지 말 것 $id = $_GET['id']; $sql = "SELECT FROM member...