>  기사  >  백엔드 개발  >  PHP가 mysql과 상호작용하려면 이스케이프해야 합니까?

PHP가 mysql과 상호작용하려면 이스케이프해야 합니까?

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌원래의
2023-06-19 09:57:171276검색

PHP 대화형 mysql은 작은 따옴표, 큰 따옴표 및 백슬래시와 같은 일부 문자가 SQL 문에서 특별한 의미를 갖기 때문에 이스케이프되어야 합니다. SQL 주입 공격, 공격자가 데이터 삭제, 기밀 정보 획득 등 애플리케이션의 동작을 변경하기 위해 악성 SQL 코드를 실행하는 것을 방지합니다.

PHP가 mysql과 상호작용하려면 이스케이프해야 합니까?

이 튜토리얼의 운영 체제: Windows 10 시스템, php8.1.3 버전, Dell G3 컴퓨터.

PHP를 사용하여 MySQL과 상호 작용할 때 일부 문자는 SQL 문에서 특별한 의미를 갖습니다. 이러한 문자가 오해되는 것을 방지하려면 이스케이프 처리해야 합니다.

일반적으로 이스케이프해야 하는 문자에는 작은따옴표('), 큰따옴표(") 및 백슬래시()가 포함됩니다.

예를 들어 PHP 코드에서는 MYSQLI 확장을 통해 MySQL 데이터베이스에 연결합니다.

```php
$name = "John O'Connor";
$age = 25;
mysqli_query($conn, "INSERT INTO users(name, age) VALUES('$name', '$age')");
```

$name 변수에 작은따옴표가 포함되어 있으면 SQL 문 실행 오류가 발생합니다. 이러한 상황을 방지하려면 mysqli_real_escape_string() 함수를 사용하여 데이터를 이스케이프할 수 있습니다.

```php
$name = "John O'Connor";
$age = 25;
$name = mysqli_real_escape_string($conn, $name);
mysqli_query($conn, "INSERT INTO users(name, age) VALUES('$name', '$age')");
```

이 함수는 자동으로 이제 변수 $name에 작은따옴표가 포함되어 있어도 SQL 문 실행 오류가 발생하지 않습니다.

SQL 주입 공격을 피할 수 있다는 이점이 있습니다. 사용자 입력 이스케이프의 취약점으로 인해 공격자는 악성 SQL 코드를 실행하여 데이터 삭제, 기밀 정보 획득 등과 같은 애플리케이션의 동작을 변경할 수 있습니다. 이스케이프를 사용하면 이 공격을 방지하는 데 도움이 될 수 있습니다. 도구 및 프로그래밍 언어인 mysqli_real_escape_string() 함수가 예로 제공됩니다.

<?php
// 建立数据库连接
$conn = mysqli_connect("localhost", "username", "password", "database");
// 检查连接是否成功
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}
// 要转义的字符串
$string_to_escape = "It&#39;s a beautiful day!";
// 对字符串进行转义
$escaped_string = mysqli_real_escape_string($conn, $string_to_escape);
// 输出未转义的字符串和转义后的字符串
echo "Original string: " . $string_to_escape . "<br>";
echo "Escaped string: " . $escaped_string;
// 关闭数据库连接
mysqli_close($conn);
?>

위의 예에서는 먼저 MySQL 데이터베이스에 대한 연결을 설정한 다음 이스케이프할 문자열을 선언합니다. mysqli_real_escape_string() 함수. 마지막으로 원본 문자열과 이스케이프된 문자열을 출력하고 데이터베이스 연결을 닫습니다.

mysqli_real_escape_string() 함수를 사용할 때 첫 번째 인수로 MySQL 연결 개체를 전달해야 합니다. 왜냐하면 함수가 올바르게 이스케이프하려면 어떤 MySQL 서버가 사용되고 있는지 알아야 하기 때문입니다

.

위 내용은 PHP가 mysql과 상호작용하려면 이스케이프해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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