>  기사  >  데이터 베이스  >  SQL 주입을 방지하기 위해 PHP에서 MySQL 연결을 사용하여 매개변수화된 쿼리를 구현하는 방법은 무엇입니까?

SQL 주입을 방지하기 위해 PHP에서 MySQL 연결을 사용하여 매개변수화된 쿼리를 구현하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 07:36:30238검색

How to Implement Parameterized Queries with MySQL Connection in PHP to Prevent SQL Injection?

PHP에서 MySQL 연결을 사용한 매개변수화된 쿼리

데이터베이스 애플리케이션의 보안을 보장하는 것이 가장 중요하며 매개변수화된 쿼리는 SQL에 대한 중요한 방어입니다. 주입 공격. 이 기술에는 사용자 입력을 직접적인 SQL 구문이 아닌 매개 변수로 처리하여 악의적인 문자 조작을 효과적으로 방지하는 작업이 포함됩니다.

귀하의 코드에서 사용자 이름과 비밀번호 매개 변수를 연결하는 안전하지 않은 접근 방식은 삽입에 취약합니다. 이를 수정하려면 다음 단계를 따르세요.

  1. 매개변수화된 쿼리를 준비하세요.

    <code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?");</code>

    이렇게 하면 다음을 나타내는 자리 표시자(?)가 있는 문이 준비됩니다. 전달할 매개변수입니다.

  2. 바인딩 매개변수:

    <code class="php">mysqli_stmt_bind_param($stmt, "ss", $userName, $userPass);</code>

    여기서 "ss"는 매개변수 유형(두 문자열)을 지정합니다. $userName 및 $userPass는 이러한 매개변수에 바인딩됩니다.

  3. 문 실행:

    <code class="php">mysqli_stmt_execute($stmt);</code>

    이것은 바인딩된 매개변수화된 쿼리를 실행합니다. 매개변수.

  4. 결과 가져오기:

    <code class="php">$row = mysqli_stmt_fetch($stmt);</code>

    결과 행을 검색하여 존재 여부 또는 추가 조작 여부를 확인할 수 있습니다.

추가 권장사항:

  • 보안 향상을 위해 사용자 비밀번호를 일반 텍스트로 저장하는 대신 해시하세요.
  • 확인 사용자 입력이 예상되는 형식과 유형을 준수하는지 확인합니다.
  • 성능 최적화를 위해 데이터베이스 연결 풀링을 활용합니다.

다음 단계를 따르면 PHP 애플리케이션의 보안을 강화하고 SQL 주입 취약점으로부터 보호하세요. 매개변수화된 쿼리는 현대 데이터베이스 프로그래밍의 필수 기술이며 항상 사용자 입력 처리에 사용해야 한다는 점을 기억하세요.

위 내용은 SQL 주입을 방지하기 위해 PHP에서 MySQL 연결을 사용하여 매개변수화된 쿼리를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.