SQL注入,这个词相信多数程序员都不陌生。而且可能都对这样的漏洞攻击有过修补的经验。本文主要还是写给一些新手程序员看,避免自己写的程序被黑客利用,提升安全性。下面以PHP程序为例进行讲解
SQL注入的原理
要说原理,主要还是从PHP的MYSQL查询语句开始。让我们来看一下 普通的数据库查询语句。如下:
$sql = “SELECT * FROM `xxxx` WHERE `id` = ‘$id’ ORDER BY id ASC”;
这是一条普通的查询语句。为了让程序能够通过get 或 post方式传参进行动态查询,一般都会通过在SQL语句中加入变量的方式进行查询;即上面语句中的变量”$id”。
一般来说,PHP程序员都会使用$_GET['']、$_REQUEST['']等方式获取url中的传参。这样一来,便给了黑客可乘之机。
举个例子,上面这条语句中如果对应的url为 www.521478.com/index.php?id=1 , 那么程序语句实际上之行为:$sql = “SELECT * FROM `xxxx` WHERE `id` = 1 ORDER BY id ASC”;(确实,这样是没问题的)
再举个例子,如果这条语句中对应的url为www.521478.com/index.php?id=1 and 1=1 ,那么程序语句已经变成了 $sql = “SELECT * FROM `xxxx` WHERE `id` = 1 and 1=1 ORDER BY id ASC”;
到这里,大家应该清楚黑客是如何利用SQL注入漏洞进行攻击了吧?看清了注入漏洞的工作原理,我们现在要做的就是把变量$id通过$_GET['']等方式获取来的参数字符进行过滤。
例如:我们过滤掉”and”,”=” 这样的字符,那么程序语句就变成了$sql = “SELECT * FROM `xxxx` WHERE `id` = 1 11 ORDER BY id ASC”; 黑客就无法额外增加一些SQL查询语句来进行程序设计以外的动作。
如何过滤URL传参的变量
在PHP程序中,我们可以使用 str_replace() 函数对字符串变量的内容进行字符替换。
语法如下:str_replace(“需要替换的字段”,”替换为的字段”,”字符串内容”);
套用到上面的例子中,假如我们需要过滤掉”and”我们可以这样写:
$id = $_GET['id'];
$id=str_replace(“and”,”",$id);
这样一来,变量id字符串中的”and”被替换为空字符,可以理解为被删除了。可能大家会问,这样不是只替换了一个字符吗?SQL中的执行字符好像很多啊?
没错,在不同的使用环境下,可能我们某一个程序需要替换十几个字符。所以我们需要使用数组的方式,将字符替换封装为一个函数,便于我们在任何时候调用它。
字符替换函数
function fliter_sql($value) {
$sql = array(“select”, ‘insert’, “update”, “delete”, “‘”, “/*”,
“../”, “./”, “union”, “into”, “load_file”, “outfile”,”=”,”aNd”,”!”,”script>”,”<”,”>”,”iframe>”,’onlaod’,'”>’);
$sql_re = array(“”,”",”",”",”",”",”",”",”",”",”",”",”",”",”",”",”",”",”",”",”");
return str_replace($sql, $sql_re, $value);
}
这是我经常使用的过滤函数,通过它基本上可以过滤掉绝大多数的SQL注入。使用的时候只需要调用这个函数,例如:$id = fliter_sql($_GET['id']); 即可。
如果帮到大家,转载时请附带加上一个出处,文章来自“521478”
相关推荐
SQL注入漏洞原理与防御 漏洞介绍 SQL注入漏洞的本质是把用户输入的数据当做代码来执行,违背了“数据与代码分离”的原则。 SQL注入漏洞有两个关键条件,理解这两个条件可以帮助我们理解并防御SQL注入漏洞: 用户能...
针对SQL注入隐蔽性极强的特点,《SQL注入攻击与防御》重点讲解了SQL注入的排查方法和可以借助的工具,总结了常见的利用SQL漏洞的方法。另外,《SQL注入攻击与防御》还专门从代码层和系统层的角度介绍了避免SQL注入的...
因此,深入理解和掌握SQL注入的攻击原理、防御策略和排查方法成为了网络管理人员和开发人员的当务之急。 本书《SQL注入攻击与防御》旨在解决这一紧迫问题,其内容主要包含以下几个方面: 1. SQL注入的介绍:本书...
本文档主要介绍了SQL注入攻击的原理、方式、危害及防御措施,旨在帮助读者更好地理解和防御这种常见的数据库漏洞攻击方式。 1.SQL注入攻击简介 SQL注入攻击是一种针对数据库的漏洞攻击方式,它是通过构造巧妙的SQL...
以上内容涵盖了SQL注入的基本概念、原理、类型以及防御措施,并结合实际案例进行了深入分析。希望这些信息能够帮助您更好地理解SQL注入这一安全问题,并采取有效措施保护您的Web应用程序免受此类攻击。
SQL注入攻击的原理及防御
#### 二、SQL注入原理 SQL注入攻击的关键在于利用应用程序在处理用户输入数据时存在的安全漏洞。这些漏洞通常是由于程序员未能正确验证和清理用户输入导致的。下面将详细介绍SQL注入攻击的具体原理: ##### 1. ...
1. **基本原理**:当用户提交的数据作为SQL语句的一部分被直接执行时,如果该数据包含特殊字符或恶意构造的SQL命令,则可能导致SQL注入。例如,一个简单的查询语句可能是这样的: ```sql SELECT * FROM articles ...
SQL注入攻击是一种严重威胁,但通过理解其工作原理和采用有效的防御措施,我们可以显著降低风险。《SQL注入攻击与防御 第2版》这本书详细讲解了这些概念,并提供了实用的解决方案,对于网络安全专业人士来说,是一份...
该方法通过对大量SQL注入攻击报文的攻击特征进行总结分析,结合SQL注入攻击的攻击特征和攻击原理,提出了一种基于通用规则的SQL注入攻击检测与防御方法。 SQL注入攻击是一种常见的Web应用安全漏洞,通过在Web应用...
针对SQL注入,存在多种防御方法: 1. 使用预编译的SQL语句和参数化查询,减少因SQL代码拼接导致的安全风险。 2. 对用户输入进行严格的验证,过滤掉如单引号、双引号等特殊字符。 3. 在Web应用系统中,用户登录表单和...
五、 SQL注入漏洞的防御方法 * 对用户输入数据的合法性进行判断,以防止SQL注入漏洞。 * 使用参数化查询来防止SQL注入漏洞。 * 及时更新和修复数据库管理系统的漏洞。 六、 SQL注入漏洞的案例分析 * 例如,在网站...
SQL 注入方法讲义 SQL 注入方法讲义是指攻击者通过构造特殊的 SQL ...了解 SQL 注入的原理和类型,可以帮助我们更好地防御攻击。同时,需要加强输入验证、参数化查询、错误处理和数据加密等安全措施,以保护敏感数据。
首先,我们需要理解SQL注入的基本原理。当一个Web应用没有对用户输入的数据进行充分的验证和过滤,这些数据可以直接拼接到SQL查询中,就可能产生SQL注入漏洞。例如,一个简单的登录界面,如果只检查用户名而忽略了...
以下将深入讲解SQL注入的基本概念及其防范方法。 首先,让我们理解SQL注入的原理。当一个Web应用在构建动态SQL查询时,它可能会直接使用用户提供的输入。如果这个输入没有经过充分的验证和过滤,攻击者就可以插入...
总的来说,“SQL注入攻击与防御”这个话题涵盖了攻击原理、类型、防御方法等多个方面,对于提高个人和组织的网络安全意识和能力具有重要意义。无论是初学者还是有经验的IT专业人士,深入理解和实践这些知识都是非常...