JavaScript - 문제 미리보기

문제 752

hard
데이터베이스 연동 및 SQL 인젝션 방지에 대한 문제입니다.
다음 PHP 코드에서 SQL 인젝션 공격을 방지하기 위해 사용된 기법은 무엇인가요?

```php
$sql = "SELECT customerid, companyname FROM customers WHERE customerid = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $_GET['q']);
$stmt->execute();
```
A. SQL 쿼리 암호화
B. Prepared Statement (준비된 문장)
C. 데이터베이스 접근 권한 제한
D. 입력값 길이 제한

정답: B

이 코드는 Prepared Statement(준비된 문장) 기법을 사용하여 SQL 인젝션을 방지합니다. `prepare()`로 SQL 문을 미리 준비하고, `?` 플레이스홀더를 사용한 후, `bind_param()`으로 실제 값을 안전하게 바인딩합니다. 이 방식은 사용자 입력을 SQL 쿼리와 분리하여 처리하므로, 악의적인 SQL 코드가 삽입되어도 실행되지 않습니다. "s"는 문자열 타입을 의미하며, `$_GET['q']` 값이 안전하게 바인딩됩니다.

💡 학습 팁

이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.