预防sql注入安全的函数

简介: 预防sql注入安全的函数 定义和用法 mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。 下列字符受影响: /x00 /n /r / ' " /x1a 如果成功,则该函数返回被转义的字符串。
+关注继续查看

预防sql注入安全的函数


定义和用法

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

下列字符受影响:

/x00
/n
/r
/
'
"
/x1a
如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

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

说明
本函数将 string 中的特殊字符转义,并考虑到连接的当前字符集,因此可以安全用于 mysql_query()。
提示和注释
提示:可使用本函数来预防数据库攻击。
例子
例子 1
<?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);
?>例子 2
数据库攻击。本例演示如果我们不对用户名和密码应用 mysql_real_escape_string() 函数会发生什么:

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$sql = "SELECT * FROM users
WHERE user='{$_POST['user']}'
AND password='{$_POST['pwd']}'";
mysql_query($sql);

// 不检查用户名和密码
// 可以是用户输入的任何内容,比如:
$_POST['user'] = 'john';
$_POST['pwd'] = "' OR ''='";

// 一些代码...

mysql_close($con);
?>那么 SQL 查询会成为这样:

SELECT * FROM users
WHERE user='john' AND password='' OR ''=''这意味着任何用户无需输入合法的密码即可登陆。

例子 3
预防数据库攻击的正确做法:

<?php
function check_input($value)
{
// 去除斜杠
if (get_magic_quotes_gpc())
  {
  $value = stripslashes($value);
  }
// 如果不是数字则加引号
if (!is_numeric($value))
  {
  $value = "'" . mysql_real_escape_string($value) . "'";
  }
return $value;
}

$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// 进行安全的 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);
?>

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
SQL 存储 安全
详解:驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server 建立安全连接。
详解:驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server 建立安全连接。
431 0
|
4月前
|
SQL JavaScript 安全
【Node.js实战】一文带你开发博客项目之安全(sql注入、xss攻击、md5加密算法)
【Node.js实战】一文带你开发博客项目之安全(sql注入、xss攻击、md5加密算法)
114 0
|
4月前
|
SQL 安全 前端开发
Web 安全之 SQL 注入攻击
Web 安全之 SQL 注入攻击
157 0
|
5月前
|
SQL 监控 安全
TP框架SQL注入&安全写法&架构&路由
TP框架SQL注入&安全写法&架构&路由
|
5月前
|
SQL 机器学习/深度学习 人工智能
隐语开源首个工业级多方安全数据分析系统SCQL:像写SQL一样「易用」隐私计算
隐语开源首个工业级多方安全数据分析系统SCQL:像写SQL一样「易用」隐私计算
|
5月前
|
SQL 存储 安全
WEB安全之常见漏洞篇之SQL注入(基础 原理篇)
WEB安全之常见漏洞篇之SQL注入(基础 原理篇)
125 0
|
9月前
|
SQL JSON 供应链
【墨菲安全实验室】Apache IoTDB grafana-connector模块SQL注入分析
【墨菲安全实验室】Apache IoTDB grafana-connector模块SQL注入分析
【墨菲安全实验室】Apache IoTDB grafana-connector模块SQL注入分析
|
SQL 存储 安全
[WEB安全]MSSQL/SQL Server 提权手法详解(下)
[WEB安全]MSSQL/SQL Server 提权手法详解
148 0
[WEB安全]MSSQL/SQL Server 提权手法详解(下)
|
SQL 安全 数据库连接
[WEB安全]MSSQL/SQL Server 提权手法详解(中)
[WEB安全]MSSQL/SQL Server 提权手法详解
251 0
[WEB安全]MSSQL/SQL Server 提权手法详解(中)
推荐文章
更多