请输入您要查询的百科知识:

 

词条 mysql_real_escape_string
释义

语言/版本

PHP

PHP 4 >= 4.3.0

PHP 5

定义和用法

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

下列字符受影响:

\\x00

\

\\r

\\

'

"

\\x1a

如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

语法

mysql_real_escape_string(string,connection)

参数 描述

string 必需。规定要转义的字符串。

connection 可选。规定 MySQL 连接。如果未规定,默认使用上一个连接。

说明

本函数将 string 中的特殊字符转义,并考虑到连接的当前字符集,因此可以安全用于 mysql_query()。

mysql_real_escape_string() 并不转义 %_

可使用本函数来预防数据库攻击。

常规案例:例一;攻击案例:例二;解决攻击案例:例三。

例一

<?php

$con = mysql_connect("localhost", "hello", "321");

if (!$con)

{

die('Could not connect: ' . mysql_error());

}

// 获得用户名和密码的代码

// 转义用户名和密码,以便在 SQL 中使用

$user = mysql_real_escape_string($user);

$pwd = mysql_real_escape_string($pwd);

$sql = "SELECT * FROM users WHERE user='" . $user . "' AND password='" . $pwd . "'";

// 更多代码

mysql_close($con);

?>

例二

<?php

$con = mysql_connect("localhost", "peter", "abc123");

if (!$con)

{

die('Could not connect: ' . mysql_error());

}

$sql = "SELECT * FROM users

WHERE user='{$_POST['user']}'

AND password='{$_POST['pwd']}'";

mysql_query($sql);

// We didn't check username and password.

// Could be anything the user wanted! Example:

$_POST['user'] = 'john';

$_POST['pwd'] = "' OR ''='";

// some code

mysql_close($con);

?>

SQL语句就会如下:

SELECT * FROM users WHERE user='john' AND password='' OR ''=''

这意味着任何用户无需输入合法的密码即可登陆。

例三

<?php

function check_input($value)

{

// Stripslashes

if (get_magic_quotes_gpc())

{

$value = stripslashes($value);

}

// Quote if not a number

if (!is_numeric($value))

{

$value = "'" . mysql_real_escape_string($value) . "'";

}

return $value;

}

$con = mysql_connect("localhost", "peter", "abc123");

if (!$con)

{

die('Could not connect: ' . mysql_error());

}

// Make a safe SQL

$user = check_input($_POST['user']);

$pwd = check_input($_POST['pwd']);

$sql = "SELECT * FROM users WHERE user=$user AND password=$pwd";

mysql_query($sql);

mysql_close($con);

?>

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/26 7:35:26