웹 응용 프로그램 개발에서 데이터 필터링 및 검증은 특히 응용 프로그램에 데이터베이스 작업이 포함 된 경우 보안을 보장하는 중요한 단계입니다. SQL 주입 공격을 방지하는 방법은 개발자가주의를 기울여야하는 핵심 문제입니다. 이 기사는 개발자가 SQL 주입 공격을 효과적으로 방지 할 수 있도록 몇 가지 일반적인 PHP 데이터 필터링 방법을 소개합니다.
전처리 명세서는 SQL 주입 공격을 방지하는 효과적인 방법으로, 데이터 매개 변수와 별도로 SQL 쿼리 문을 실행하여 SQL 문으로 사용자가 입력 한 악성 데이터를 접합시키는 위험을 피할 수 있습니다. PHP에서는 PDO (PHP Data Object) 또는 MySQLI (MySQL 개선 확장)를 사용하여 전처리 문을 구현할 수 있습니다.
다음은 PDO 사전 처리 문을 사용하는 코드 예제입니다.
// 만들다 PDO 연결하다
$pdo = new PDO('mysql:host=localhost;dbname=mydb;charset=utf8', 'username', 'password');
<p>// 전처리 진술을 준비하십시오<br>
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');</p>
<p>// 바인딩 매개 변수<br>
$stmt->bindParam(':username', $username);</p>
<p>// 쿼리를 실행하십시오<br>
$stmt->execute();</p>
<p>// 결과를 얻으십시오<br>
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);<br>
PHP는 Filter_Input () 및 Filter_var () 와 같은 사용자 입력 데이터를 필터링하기위한 다양한 내장 기능을 제공합니다. 이러한 기능은 지정된 필터를 기반으로 입력 데이터를 검증하고 정리하여 SQL 주입 공격을 효과적으로 방지 할 수 있습니다.
다음은 filter_input () 및 filter_var ()를 사용하는 코드 예입니다.
// 사용 filter_input() 필터 입력 데이터
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
<p>// 사용 filter_var() 필터 입력 데이터<br>
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);<br>
사용자 입력 데이터를 SQL 문에 삽입 할 때는 특수 문자를 피해야합니다. PHP는이 문제를 처리하기 위해 addSlashes () 및 mysqli_real_escape_string () 함수를 제공합니다.
다음은 mysqli_real_escape_string ()을 사용하여 특수 문자를 피하기위한 코드 예제입니다.
// 만들다 mysqli 연결하다
$conn = mysqli_connect('localhost', 'username', 'password', 'mydb');
<p>// 특수 캐릭터를 탈출하십시오<br>
$username = mysqli_real_escape_string($conn, $_POST['username']);<br>
$password = mysqli_real_escape_string($conn, $_POST['password']);</p>
<p>// 구현하다 SQL 질문<br>
$query = "INSERT INTO users (username, password) VALUES('$username', '$password')";<br>
mysqli_query($conn, $query);<br>
전처리 문, 필터링 기능 및 특수 문자를 피함으로써 개발자는 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 그러나 해커는 항상 새로운 공격 방법을 찾고 있기 때문에 소프트웨어를 제 시간에 업데이트하고 잠재적 취약점을 고정하는 것도 중요합니다. 따라서 개발자는 응용 프로그램의 보안을 보장하기 위해 정기적으로 코드에 대한 보안 검토를 수행해야합니다.
요컨대, 웹 개발자는 사용자 입력을 처리 할 때 데이터 보안에 큰 중요성을 부여해야합니다. 올바른 필터링 및 검증 방법을 사용하면 응용 프로그램의 보안을 향상시킬뿐만 아니라 SQL 주입의 위험을 크게 줄일 수 있습니다. 이 기사가 SQL 주입 방지에 대한 PHP 개발자에게 유용한 조언을 제공하기를 바랍니다.