>  기사  >  php教程  >  php mysql_real_escape_string 함수 사용법 및 예제 tutorial_php 기본

php mysql_real_escape_string 함수 사용법 및 예제 tutorial_php 기본

WBOY
WBOY원래의
2016-05-16 08:59:592817검색

mysql_query()에서 안전하도록 현재 문자의 연결 설정을 고려하여 unescaped_string에서 특수 문자를 이스케이프합니다. 바이너리 데이터를 삽입하려면 이 함수를 사용해야 합니다.

다음 캐릭터가 영향을 받습니다:

  • x00
  • '
  • "
  • x1a

성공하면 함수는 이스케이프된 문자열을 반환합니다. 실패하면 false를 반환합니다.

문법

mysql_real_escape_string(string,connection)
参数 描述
string 必需。规定要转义的字符串。
connection 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。

설명

이 함수는 문자열의 특수 문자를 이스케이프하고 연결의 현재 문자 집합을 고려하므로 mysql_query()와 함께 사용하는 것이 안전합니다.

팁 및 참고 사항

팁: 이 기능을 사용하면 데이터베이스 공격을 방지할 수 있습니다.

예시 1

코드 복사 코드는 다음과 같습니다.

$con = mysql_connect( "localhost", "hello", "321");
if (!$con)
{
die('연결할 수 없습니다: ' . mysql_error());
}

// 사용자 이름과 비밀번호를 가져오는 코드

// SQL에서 사용하기 위해 사용자 이름과 비밀번호를 이스케이프합니다.
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);

$sql = "SELECT * FROM users WHERE
user='" . $user . "'"

//추가 코드

mysql_close($con);
?>

예시 2
데이터베이스 공격. 이 예는 사용자 이름과 비밀번호에 mysql_real_escape_string() 함수를 적용하지 않으면 어떤 일이 발생하는지 보여줍니다.

코드 복사 코드는 다음과 같습니다.

$con = mysql_connect( "localhost", "hello", "321");
if (!$con)
{
die('연결할 수 없습니다: ' . mysql_error());
}

$sql = "SELECT * FROM 사용자
WHERE user='{$_POST['user']}'
AND 비밀번호='{$_POST['pwd']}'";
mysql_query($sql);

// 사용자 이름과 비밀번호를 확인하지 않습니다.
// 다음과 같이 사용자가 입력한 모든 항목일 수 있습니다.
$_POST['user'] = 'john';
$_POST['pwd '] = "' 또는 ''='";

// 일부 코드...

mysql_close($con);
?>

그러면 SQL 쿼리는 다음과 같습니다.

SELECT * FROM users
WHERE user='john' AND 비밀번호='' OR ''='' 이는 모든 사용자가 유효한 비밀번호를 입력하지 않고도 로그인할 수 있음을 의미합니다.

예 3
데이터베이스 공격을 예방하는 올바른 방법:

코드 복사 코드는 다음과 같습니다.

function check_input ($value )
{
// 슬래시 제거
if (get_magic_quotes_gpc())
{
$value = Stripslashes($value);
}
// If 숫자가 아닌 경우 따옴표를 추가하세요
if (!is_numeric($value))
{
$value = "'" . mysql_real_escape_string($value) "'";
}
return $값
}

$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('연결할 수 없습니다: ' . mysql_error()) ;
}

// 보안 SQL 수행
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = " SELECT *
user=$user AND 비밀번호=$pwd";

인 사용자로부터

mysql_query($sql);

mysql_close($con);
?>

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