`

PHP 防止SQL注入的方法

 
阅读更多

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

语法

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);
?>

 

 

参考来源:http://www.w3school.com.cn/php/func_mysql_real_escape_string.asp 打开链接

 

 

 

 

 

分享到:
评论

相关推荐

    php防止SQL注入方法-个人学习篇

    ### PHP防止SQL注入方法详解 #### 一、引言 SQL注入是一种常见的Web应用程序安全漏洞,攻击者通过在输入字段中插入恶意SQL语句来控制数据库查询,从而获取敏感信息或者破坏数据。本文将深入探讨如何利用PHP语言来...

    JS代码防止SQL注入的方法(超简单)

    这是防止SQL注入的最有效方法。 服务器端的代码示例(假设使用PHP和MySQLi): ```php // 使用预处理语句和参数化查询来防止SQL注入 $stmt = $mysqli-&gt;prepare("SELECT * FROM users WHERE username=? AND ...

    防止sql注入工具类l

    3. **使用安全库或工具类**:这里提到的“防止SQL注入工具类”可能是指一个专门用于处理SQL注入的PHP库。这个工具类可能提供了自动转义或参数化查询的功能,比如`mysqli_real_escape_string`函数,或者更高级的ORM...

    php中防止SQL注入的方法

    php中防止SQL注入的方法,安全,PHP代码编写是一方面,PHP的配置更是非常关键。

    360提供的php防sql注入代码修改类

    为了防止SQL注入,我们需要遵循以下原则: 1. 使用预处理语句:预处理语句(如PDO或mysqli的预处理)可以使SQL语句和参数分离,有效避免注入攻击。 2. 参数化查询:与预处理类似,参数化查询能确保用户输入的数据...

    PHP与SQL注入渗透方法.doc

    5. **使用安全框架**:现代Web框架如Laravel、Symfony等内置了强大的安全特性,包括防止SQL注入的机制,开发者应充分利用这些框架提供的安全措施。 6. **教育与培训**:定期对开发团队进行安全意识培训,强调SQL...

    PHP+Mysql 带SQL注入源码 下载

    这两个扩展都支持预处理语句,这是防止SQL注入的有效手段。 **预处理语句与参数绑定** 预处理语句是防止SQL注入的一种最佳实践。它允许开发者在执行SQL查询之前先定义好结构,然后将变量作为参数传递。这样,即使...

    寻找sql注入的网站的方法(必看)

    方法一:利用google高级搜索,比如搜索url如.asp?... 您可能感兴趣的文章:Java面试题解析之判断以及防止SQL注入SQL注入原理与解决方法代码示例通过ibatis解决sql注入问题Win2003服务器防SQL注入神器–D盾_IIS防火墙

    使用PHP实现防止sql注入功能

    本案例主要在PHP中分别使用PDO的quote()方法和prepare()预处理语句来实现防止sql注入的功能。 所谓sql注入,就是通过把sql命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql...

    sql注入讲解ppt.pptx

    2. Prepared Statement:使用 Prepared Statement 来防止 SQL 注入攻击。 3. LIMIT 和 OFFSET:使用 LIMIT 和 OFFSET 限制查询结果,防止敏感数据泄露。 4.Least Privilege:使用最小权限原则,限制数据库用户的权限...

    php168sql注入漏洞

    ### PHP168 SQL注入漏洞分析与利用 #### 背景介绍 PHP168是一款基于PHP语言开发的内容管理系统,被广泛应用于政府网站、企业官网等场景中。然而,在某些版本中,PHP168存在着严重的SQL注入漏洞,攻击者可以利用此...

    php和asp防止sql注入类

    首先,PHP防止SQL注入的主要方法是使用预处理语句(Prepared Statements)和参数化查询。预处理语句允许开发者提前编译SQL模板,然后在执行时传递变量作为参数,而不是直接拼接在SQL字符串中。这可以确保即使输入的...

    web测试之安全测试方法:sql注入方法

    1. **参数化查询/预编译语句**:使用参数化查询,如PHP的PDO或MySQLi的预处理语句,可防止SQL注入。 2. **输入验证**:对用户输入进行严格的验证,拒绝不符合规则的数据。 3. **转义特殊字符**:对用户输入进行转义...

    SQL 注入天书.pdf

    SQL注入是一种常见的网络安全漏洞,发生在应用程序使用用户输入的SQL代码直接构建数据库查询时。当攻击者能够通过输入恶意SQL语句来控制或篡改...通过深入学习和实践,可以有效地防止SQL注入攻击,保障系统的安全。

    SQL注入全面讲解技术文档

    以下是对SQL注入漏洞的全面讲解,包括其原理、防范方法以及高级技巧。 1. SQL注入漏洞原理: SQL注入的基础在于,当用户输入的数据直接拼接到SQL查询语句中,而没有经过适当的过滤或转义,攻击者可以构造特定的...

    SQL注入与防止SQL注入

    但最好的防御策略不是依赖这些设置,而是采用参数化查询或预编译语句,如PHP的PDO或MySQLi的预处理语句,这些方法能确保用户输入被正确地隔离,从而防止SQL注入。 例如,下面的PHP代码展示了如何使用预编译语句防止...

    php登录中的防止sql注入方法分析_.docx

    以下是对PHP防止SQL注入的一些详细方法和策略的分析: 1. **参数化查询与预处理语句**: 使用PDO(PHP Data Objects)或MySQLi的预处理语句可以有效防止SQL注入。例如,使用`PDO::prepare()`创建预处理语句,并...

    PHP登录中的防止sql注入方法分析__1.docx

    以下是对防止SQL注入的一些方法的详细分析: 首先,我们来看一个不安全的登录代码示例: ```php $sql = 'select * from test where username = "$username" and password = "$password"'; ``` 这个例子中的`$...

    PHPSQL注入漏洞学习

    SQL注入是攻击者通过输入恶意的SQL代码,欺骗数据库服务器执行非预期的操作,从而获取、修改、删除或添加数据的一种方法。在PHP环境中,由于不安全的用户输入处理,这种漏洞尤为突出。 二、PHP SQL注入的类型 1. ...

    PHP防止SQL注入的研究.pdf

    【PHP防止SQL注入的方法】 1. **预处理语句(Prepared Statements)**:使用PDO或MySQLi扩展的预处理语句可以有效地防止SQL注入。预处理语句将查询结构与用户输入的数据分开,确保即使用户输入恶意代码,也无法改变...

Global site tag (gtag.js) - Google Analytics