>백엔드 개발 >PHP 튜토리얼 >mysql_* 함수를 사용하여 안전한 MySQL 쿼리를 어떻게 작성할 수 있습니까?

mysql_* 함수를 사용하여 안전한 MySQL 쿼리를 어떻게 작성할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-17 09:50:24368검색

How Can I Write Secure MySQL Queries Using the mysql_* Functions?

참고: PDO 없이 안전한 MySQL 코드 작성

소개

MySQL 쿼리는 종종 어려움을 겪습니다. 보안상의 취약점 및 부적절한 취급으로 인한 오류가 발생할 수 있습니다. 이 문제를 해결하려면 안전하고 신뢰할 수 있는 코드를 작성하기 위한 모범 사례를 이해하는 것이 중요합니다.

MySQL_* 함수의 보안 문제

mysql_* 함수 계열을 사용하는 경우 , 일반적인 보안 문제 발생:

  • SQL 삽입: 공격자는 사용자 입력에 악성 SQL 문을 삽입하여 쿼리를 조작할 수 있습니다.
  • 교차 사이트 스크립팅(XSS): 악성 JavaScript를 출력된 값에 삽입하여 실행할 수 있습니다.

사용예

다음 PHP 코드 샘플은 mysql_* 함수를 사용하여 안전한 UPDATE 쿼리를 수행하는 방법을 보여줍니다.

<?php

# Connect and disable mysql error output
$connection = @mysql_connect($config['host'], $config['user'], $config['pass']);

# Select database
mysql_select_db($config['db'], $connection);

# Set character set
mysql_set_charset('utf8', $connection);

# Escape user input
$id = mysql_real_escape_string($_POST['id']);
$name = mysql_real_escape_string($_POST['name']);

# Execute query
$result = mysql_query('UPDATE tablename SET name = "' . $name . '" WHERE id = "' . $id . '"', $connection);

# Handle result
if ($result) {
    echo htmlentities($name, ENT_COMPAT, 'utf-8') . ' updated.';
} else {
    trigger_error('Unable to update db: ' . mysql_error(), E_USER_ERROR);
}

?>

주요 기능

  • 사용자 입력을 이스케이프하여 방지합니다. SQL 주입.
  • XSS를 완화하기 위해 출력된 값을 인코딩합니다. 위험.
  • 유니코드 데이터를 처리하도록 문자 인코딩을 설정합니다.
  • 오류 처리를 사용하여 프로덕션 모드의 모든 문제를 사용자에게 알립니다.
  • 코드를 간단하고 쉽게 읽을 수 있도록 유지합니다.

결론

위에 설명된 모범 사례를 따르면 mysql_* 함수를 사용하여 안전하고 효율적인 MySQL 쿼리를 작성할 수 있습니다. 보안 취약성으로부터 애플리케이션을 보호하고 데이터 무결성을 보장하는 것이 중요하다는 점을 기억하세요.

위 내용은 mysql_* 함수를 사용하여 안전한 MySQL 쿼리를 어떻게 작성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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