`

SQL注入的基本原理和防御方法

阅读更多

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”

1
0
分享到:
评论
2 楼 909012142 2014-03-16  
黑客  
1 楼 joaboo 2014-03-09  
一般用绑定变量就好了,不用这么麻烦.

相关推荐

    SQL注入漏洞原理与防御.pdf

    SQL注入漏洞原理与防御 漏洞介绍 SQL注入漏洞的本质是把用户输入的数据当做代码来执行,违背了“数据与代码分离”的原则。 SQL注入漏洞有两个关键条件,理解这两个条件可以帮助我们理解并防御SQL注入漏洞: 用户能...

    SQL注入攻击与防御

    针对SQL注入隐蔽性极强的特点,《SQL注入攻击与防御》重点讲解了SQL注入的排查方法和可以借助的工具,总结了常见的利用SQL漏洞的方法。另外,《SQL注入攻击与防御》还专门从代码层和系统层的角度介绍了避免SQL注入的...

    SQL注入攻击的原理及防御

    SQL注入攻击的原理及防御

    Web的SQL注入原理及其防御方法.pdf

    Web的SQL注入原理及其防御方法.pdf

    SQL注入攻击与防御(安全技术经典译丛)

    针对SQL注入隐蔽性极强的特点,本书重点讲解了SQL注入的排查方法和可以借助的工具,总结了常见的利用SQL漏洞的方法。另外,本书还专门从代码层和系统层的角度介绍了避免SQL注入的各种策略和需要考虑的问题。  本书...

    SQL 注入攻击防御指南.doc

    SQL 注入攻击防御指南 如何发现并防御自动 SQL 注入攻击 研究员开发新的技术来防御 SQL 注入攻击 如何斩断 SQL 注入式攻击的疯狂魔掌? Fuzzing tool 帮助 Oracle DBA 删除 SQL 注入错误 Web 安全...

    sql注入漏洞

    根据SQL注入攻击的基本原理以及入侵前和入侵后的检测方法不同,提出了SQL注 入攻击检测的方法,并在此基础上给出了一种基于客户端和服务器端的SQL注入攻击的防御模 型,经过测试表明该模型的计算时间复杂度...

    SQL注入攻击与防御技术白皮书.pdf

    为初学者带来SQL注入攻击与防御技术白皮书,网络安全

    浅议SQL注入攻击的原理及防御.pdf

    浅议SQL注入攻击的原理及防御.pdf

    浅析SQL注入的攻击原理以及防御建议.pdf

    浅析SQL注入的攻击原理以及防御建议.pdf

    基于通用规则的SQL注入攻击检测与防御系统的研究

    面对Web网站存在的种种安全漏洞问题,文章通过对大量SQL注入攻击报文的攻击特征进行总结分析,结合SQL注入攻击的攻击特征和攻击原理,提出了一种基于通用规则的SQL注入攻击检测与防御的方法,并利用SQL注入检测工具...

    SQL注入攻击PPt

    SQL注入攻击概述及防御,为网络安全进行防御。里面主要讲解SQL注入原理,及攻击过程,和防御措施。

    《sql注入》

    本节课程让您了解SQL注入的原理、SQL注入的危害、SQL注入攻击的手段、 ASP+Access注入、ASPX+MsSQL注入、PHP+MySQL注入、JSP+Oracle...以及深入SQL注入攻击,如SQL盲注、利用操作系统、SQL注入的绕过、 如何防御SQL注入

    SQL注入攻击的原理及其防范措施

    SQL注入攻击的原理及其防范措施

    SQL注入基础.pdf

    介绍SQL注入的原理,常见入侵与防御方式,手工注入或者工具注入

    Web环境下SQL注入攻击的检测与防御.pdf

    简要介绍了SQL 注入式攻击的原理。在前人提出的“对用户输入信息实施过滤”的技术基础上, 建立了一个 针对SQL 注入攻击的检测ö防御ö备案通用模型。该模型在客户端和服务器端设置两级检查。对于一般性用户误操作和...

Global site tag (gtag.js) - Google Analytics