> 데이터 베이스 > MySQL 튜토리얼 > `mysql_real_escape_string()`은 SQL 주입으로부터 정말 안전한가요?

`mysql_real_escape_string()`은 SQL 주입으로부터 정말 안전한가요?

Patricia Arquette
풀어 주다: 2024-12-02 16:09:14
원래의
476명이 탐색했습니다.

Is `mysql_real_escape_string()` Truly Secure Against SQL Injection?

mysql_real_escape_string()의 결함 해결

PHP 애플리케이션에서 널리 사용됨에도 불구하고 일부에서는 mysql_real_escape_string()의 보안 취약성에 대한 우려를 제기했습니다. ). 이 함수는 사용자 입력에서 특수 문자를 이스케이프 처리하여 SQL 삽입 공격을 방지하도록 설계되었습니다.

mysql_real_escape_string()이 완전히 부적절합니까?

MySQL C API 문서에서는 잠재적인 가능성을 인정합니다. mysql_real_escape_string()에 문제가 있습니다. 연결의 문자 집합을 변경하기 위해 SET NAMES/SET CHARACTER SET 문을 사용하지 않는 것이 좋습니다. 대신, mysql_real_escape_string()을 사용하기 전에 mysql_set_character_set() 함수를 호출해야 합니다.

증명 코드

PHP 함수 mysql_set_charset()는 mysql_real_escape_string에서 사용하는 문자 집합을 수정합니다. (). 이는 다음 코드 조각에 설명되어 있습니다.

<?php
// Connect to MySQL and select the database
$link = mysqli_connect("localhost", "user", "password", "database");

// Set the character set for the connection
mysql_set_charset($link, "utf8");

// Escape the input using mysql_real_escape_string()
$escaped_input = mysql_real_escape_string($link, $input);

// Use the escaped input in a SQL query
$query = "SELECT * FROM table WHERE field = '$escaped_input'";
로그인 후 복사

이 접근 방식을 따르면 mysql_real_escape_string()에서 사용하는 문자 집합을 명시적으로 설정하여 특수 문자가 올바르게 이스케이프되도록 할 수 있습니다.

위 내용은 `mysql_real_escape_string()`은 SQL 주입으로부터 정말 안전한가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿