`
qq370079140
  • 浏览: 15220 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

php最有效防御sql注入攻击的方

 
阅读更多
长期以来,web的安全性存在着巨大的争议与挑战。其中,sql注入就是一种常见的一种攻击方法,开发人员普遍的做法就是不停的过滤,转义参数,可是我们php大法天生弱类型的机制,总是让黑客有机可乘,绕过防御与防御总是在明争暗斗。
记得很久以前看到过一位大牛说过的一句话,在一个程序中,60%的代码都应该是在进行各种防御。
 其实,现在来看,防御sql注入其实并不需要进行各种参数过滤,以下将开启干货模式!
PHP5.x开始引入了一种新的mysql操作方式-----mysqli,在php中也有一项相应的操作方式叫做PHP预处理。采用面向对象的方式来进行参数化绑定操作,由于对数据库操作的模式驱动不同,因此可以非常有效的防御sql注入。
 首先,我们先来看一段代码例子

01 <!--?php
02 $root "root";
03 $pwd "root";
04 $host "localhost";
05 $database =  "database";
06 $conn new mysqli($host,$root,$pwd,$database);//面向对象的方式实例化一个对象
07 $keywords $_GET['keywords'];
08 $search_sql "select content from mykey where title = ? ";//其中的?是一个占位符
09 $search_action $conn --->prepare($search_sql);//进行预处理操作
10 $search_action ->bind_param("s",$keywords);//绑定参数,第一个参数表示为上面预处理的的占位符的数量和每一个参数的数据类型,s为字符串,i为整形,d为双精度小数,有几个参数,就写几个s或d或i,比如说iiii,ssss,sidi这样的。然后后面就是有几个参数就写几个要绑定的变量,比如bind_param('sss',$username,$password,$code);
11 $search_action ->bind_result($content);//将结果绑定在相对应的变量上,比如你select了username,password,你就可以写bind_result($usernmae,$password);
12 $search_action ->execute();//执行sql操作
13 while($search_action ->fetch()){
14 echo $content.'<br>';
15 }
16 $search_action ->free_result();//释放内存
17 $search_action ->close();//结束这个实例化
18  
19 ?>

上面是php预处理中一个非常简单的例子,它内置的其他函数能很方便我们的开发速度,那么看到这里,很多人可能还是不明白,有人可能想问,你这个绑定参数是不是还是在拼凑sql语句?如果是拼凑语句,那还不是会产生注入吗
这就要从他的操作原理来解释了,其实它在prepare操作中,就已经在数据库中,执行了语句,以后的绑定参数和执行,只不过是再传递数据进去而已,所以根本不会和sql语句拼接,也就自然不会将危险代码执行。因此,在这种模式下sql注入就能很有效的被防御了。
    在php预处理的类中有很多很好用的操作,具体将会在以后的文章中为大家总结一些常用的php预处理的开发语句。
分享到:
评论

相关推荐

    SQL注入攻击及其防范检测技术研究

    为了有效防范SQL注入攻击,开发人员需要采取一系列措施,包括但不限于输入验证、参数化查询、最小权限原则等。同时,通过采用先进的检测技术和防护模型,可以在一定程度上降低攻击的成功率,保护系统的安全性和稳定...

    Web应用中的SQL注入攻击与防护方案研究.pdf

    为了防御SQL注入攻击,软件开发者需要对SQL注入攻击有全面的认识,并在设计和编程过程中采取严谨的安全措施。防御措施通常包括:使用参数化查询、存储过程、预编译SQL语句等技术,这些技术可以有效防止攻击者插入...

    SQL注入攻击与数据库安全.pdf

    SQL注入攻击是一种常见的网络安全漏洞,它利用了Web应用程序在处理用户输入时的缺陷。随着网络产业的迅猛发展,基于浏览器/...总之,通过综合的防御措施和安全意识,可以大大降低SQL注入攻击对数据库安全构成的威胁。

    JavaScript过滤SQL注入字符

    1. 使用参数化查询(预编译语句):这是防止SQL注入最有效的方法,因为它将用户输入的数据与查询结构分开。 2. 限制输入长度:对每个字段设定合理的长度限制,防止过长的输入可能导致的注入。 3. 避免显示错误信息:...

    PHP与SQL注入攻击[三]

    本文将继续深入探讨PHP与SQL注入攻击的相关知识点,并介绍几种有效的防护措施。 #### 二、数据库自带的不安全输入过滤功能 上文中提到,部分数据库系统提供了内置的输入过滤机制来防止潜在的安全风险。例如MySQL、...

    sql注入常用的解决方法

    WAF可以检测并阻止潜在的SQL注入攻击,通过监控和拦截恶意请求。 10. **定期审计与更新**: 定期审计代码,查找可能的安全漏洞,并及时更新数据库管理系统,以修复已知的SQL注入漏洞。 11. **安全编码实践**: ...

    SQL注入法攻击一日通

    ### SQL注入攻击详解 ...综上所述,SQL注入攻击是一种复杂但非常有效的网络攻击手段。了解其原理和技术细节对于防范此类攻击至关重要。开发者和安全专家需要不断更新自己的知识体系,以应对不断变化的安全威胁。

    SQL防注入+SQL注入原理

    SQL注入是一种常见的网络安全威胁,它允许攻击者通过输入恶意的SQL语句来操纵数据库,获取、修改或删除敏感...了解这些方法并将其融入到开发实践中,可以大大降低SQL注入攻击的风险,保护您的Web应用和数据库免受侵害。

    sql防注入源码杜绝网站被注入

    6. **日志记录与异常处理**:记录异常登录尝试,及时发现并处理潜在的SQL注入攻击。 7. **持续更新与安全审计**:保持代码库和服务器软件的最新状态,定期进行安全审计,寻找可能的安全漏洞。 提供的源码文件可能...

    SQL防注入组件

    SQL防注入组件是一种重要的网络安全工具,专门用于保护ASP、JSP和PHP等Web应用程序免受SQL注入攻击。SQL注入是黑客常用的攻击手段,通过在输入字段中插入恶意SQL代码,来操纵数据库,获取敏感信息,甚至完全控制...

    SQL注入与防止SQL注入

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

    SQL攻击与防御

    **SQL注入**是最常见的一种SQL攻击类型,它通过将恶意SQL代码插入到应用程序的输入字段中,使得原本正常的SQL查询被篡改或扩展,从而达到攻击者的目的。SQL注入可以分为几类: - **联合查询注入**:攻击者利用`UNION...

    SQL注入绕过实战案例

    为了防御SQL注入,开发者应遵循以下最佳实践: 1. 使用预编译语句(如PHP的PDO或MySQLi的prepare()函数),确保用户输入不会与SQL语句混淆。 2. 对用户输入进行严格的过滤和转义,避免特殊字符被解释为SQL命令。 3. ...

    常用的sql防注入代码

    2. **预编译语句与参数化查询**:这是防止SQL注入最有效的方法之一。预编译的SQL语句(如在PHP中的PDO或MySQLi的预处理语句)将查询结构与用户输入的数据分离,从而避免了SQL代码被篡改。例如,在PHP中,可以使用`$...

    最有用有效的PHP中防止SQL注入__2.docx

    以下是一些有效的方法来防范SQL注入: 1. **使用预处理语句和参数化查询**: 预处理语句和参数化查询是防止SQL注入的首选方法。它们将SQL语句和参数分开处理,确保用户输入不会影响到SQL语句的结构。在PHP中,有两...

    一种基于污染源追踪的PHP源代码SQL注入漏洞检测算法.pdf

    自提出概念以来,SQL注入攻击一直是网络安全的重要问题,特别是在2013年,它被Open Web Application Security Project (OWASP)列为最严重的Web应用安全风险之一。 【PHP语言与SQL注入】 PHP是一种广泛用于开发动态...

    手工注入教程 sql数据库注入

    其中,SQL注入攻击作为一种常见的攻击方式,在网络安全领域占据着重要的位置。SQL注入利用应用程序对用户输入的数据处理不当,通过在输入中嵌入恶意SQL代码,从而达到非法获取或修改数据库数据的目的。本文旨在详细...

    sql注入原理及php防注入代码.doc

    SQL注入是一种常见的网络安全威胁,它允许攻击者通过输入恶意的SQL语句来操纵数据库。当应用程序没有正确地过滤或转义用户提供的数据时,就...通过这些步骤,你可以显著提高PHP应用程序的安全性,有效防止SQL注入攻击。

    高级SQL注入课程.pdf

    MS SQL Server的安全机制较为强大,但仍有漏洞可被利用进行SQL注入攻击。 - **MySQL**: MySQL是最流行的开源数据库之一,被广泛应用于Web开发中。由于其广泛应用,针对MySQL的SQL注入攻击也相当常见。 - **Oracle*...

Global site tag (gtag.js) - Google Analytics