当前位置:首页 > 日记 > 正文

PHP防止SQL注入方法的详细解决方案

PHP防止SQL注入方法的详细解决方案
对问题的描述:

如果用户输入数据未经处理插入SQL查询语句,那么应用程序可能会遭受SQL注入攻击,如下示例:

复制代码代码如下所示:

unsafe_variable美元美元'user_input_post { } =;

mysql_query(插入`表`(`柱`)值('),unsafe_variable美元。);
因为用户的输入可能是这样的:

复制代码代码如下所示:

值;下拉表;—
然后SQL查询如下:

复制代码代码如下所示:

插入`表`(`柱`)值(币值的下降);表;中国)
应该采取什么有效的方法来防止SQL注入

最佳答案(来自西奥):

使用预处理语句和参数化查询,预处理语句和参数被发送到数据库服务器进行解析,这些参数将被视为普通字符,这样攻击者就不可能插入恶意SQL:

1。使用PDO:

复制代码代码如下所示:

美元美元支撑= PDO ->准备('select *从员工那里姓名:名字);
支撑美元->执行(阵列('name' = $名));
foreach($为达行){

有$行/做某事

}
2。使用mysqli:

复制代码代码如下所示:

美元美元支撑=类->准备('select *从员工那里名称=);

支撑美元-> bind_param(是的,$的名字);
支撑美元->执行();
结果=美元美元支撑-> get_result();

而($行= $结果-> fetch_assoc()){

有$行/做某事

}
PDO

注意,默认使用PDO不允许MySQL数据库进行实时预处理语句(原因如下)。为了解决这个问题,你应该禁止PDO模拟预处理语句,PDO创建数据库连接正确的使用的一个例子如下:

复制代码代码如下所示:

美元类=新PDO('mysql:北京测试;主机= 127.0.0.1;字符集= UTF8,用户,往);

美元类-> setAttribute(PDO::attr_emulate_prepares,假);

美元类-> setAttribute(PDO::::attr_errmode,PDO errmode_exception);
在上面的例子中,该attr_errmode是没有必要的,但建议添加它。这样,当一个致命的错误(错误)时,该脚本不停止运行,但给程序员一个机会捕捉pdoexceptions,以便作出适当的处理的错误。但是,第一setAttribute()调用是必要的。它禁止PDO模拟预处理语句,并使用真实的预处理语句,即MySQL执行预处理语句。这保证了报表和参数不在发送到MySQL PHP处理,这将使它不可能为攻击者注入恶意的SQL语句。理解的原因,我们可以参考这个博客:的PDO注射预防原理分析和注意使用PDO。注意在PHP的旧版本(< 5.3.6),你不能设置字符集对PDO构造函数,DSN是指:忽略字符集参数。

解析
将SQL语句发送到数据库服务器进行预处理和解析时会发生什么情况通过指定一个占位符(一个或一个以上的例子:名字),告诉数据库引擎你想过滤的地方。当你调用执行预处理语句将结合参数值指定。关键的一点是:参数的值是结合解析SQL语句,不SQL strings.sql注射液是一种恶意的字符串,包含在由触发脚本,SQL语句的建设。因此,通过分离参数的SQL语句,你防止SQL注入的风险。你所发送的任何参数的值将被视为普通的字符串不会被数据库服务器解析回到上面的例子,如果名字变is'sarah美元的价值,删除从员工,那么实际的查询将在员工寻找名称字段value'sarah ',从员工的记录删除,使用预处理语句的另一个优点是,如果执行同一句话在同一个数据库连接会话很多次,它会解决的只有一次,这可以提高执行速度。如果你想问做什么用的插入,看看下面的例子(使用PDO):

复制代码代码如下所示:

美元美元->准备PreparedStatement =分贝('insert为表(列)的值(:柱));

$ PreparedStatement ->执行(阵列('column ' = $ unsafevalue));

相关文章

保持网页和网页的页页和搜索页,在Th

保持网页和网页的页页和搜索页,在Th

搜索,网页,电脑软件,ThinkPHP,本文介绍了保存网页和搜索网页的页面的时候,thinkphp实现查询的方法分享给你供你参考。具体实现的方法如下: 在进行搜索查询时,突然发现在搜索页面时在首页使用的分页代码有一个错误。主页分页代码(部分起始和结…

利用PS图象处理软件来创建一个黑色

利用PS图象处理软件来创建一个黑色

网站,图象,创建一个,处理软件,按钮,本教程学习如何创建一个黑色风格的网站按钮的使用PS图象处理软件的圆角矩形工具和图层样式。 本教程学习如何使用PS图象处理软件的圆角矩形工具和图层样式来创建一个黑色风格的网站按钮,看看效果先。 新…

javascript修改SRC的方法

javascript修改SRC的方法

方法,修改,电脑软件,javascript,SRC,本文阐述了用javascript修改图片SRC的方法,供大家参考,具体的实现方法如下: 复制代码代码如下所示: 使用js更改图片 功能changeimage(){ VaR元= document.getelementbyid('myimage); element.src =图像 / / 053120…

js实现了两种方法,其中至少包含字母

js实现了两种方法,其中至少包含字母

字母表,方法,字符,级别,密码,本文说明了两种js实现方法:至少是字母表、格数和字符的密码级别,供大家参考: 前言 如果密码太简单,很容易被破坏,所以很多网站对密码设置都有严格的要求。一般来说,字母、数字和字符被选中3, 2个,区分大小写。对一个…

ps30分钟图标快速标记:栩栩如生的匕

ps30分钟图标快速标记:栩栩如生的匕

图标,栩栩如生,匕首,标记,快速,这里是一个ps 30分钟物体图标快速教程,以创建一个现实的匕首。这个教程很好,对ps学习者很有帮助。我建议你喜欢你的朋友一起学习。 ps 30分钟图标快速标记:栩栩如生的匕首 先显示最终效果 画的背景 no.1-1 …

PS图象处理软件时装设计节日淘宝全

PS图象处理软件时装设计节日淘宝全

淘宝,全屏幕,年货,图象,处理软件,本教程介绍淘宝全屏幕的方法使用PS图象处理软件的春节海报特别设计的朋友购买节日,专为春节年货非常漂亮的海报教程,推荐给朋友的爱,跟着教程一起学习吧 本教程使用PS图象处理软件设计的时装节淘宝全屏海报年…

用文字量创建Javascript中的对象

用文字量创建Javascript中的对象

对象,文字,电脑软件,Javascript,Javascript可以是字面上直接创建一个新对象: 复制代码代码如下所示: var obj = {:27,B:99 }; 正如上面提到的,当一个对象是一个字面量创建,在对象属性的定义可以包括单或双引号,引号,可以忽略。但是,当一个特殊字符,如空间或…

ps曲线色彩调整方法及技术实例分析

ps曲线色彩调整方法及技术实例分析

曲线,方法,调整,实例分析,色彩,本教程主要通过实例分析ps曲线颜色匹配的方法和技巧。这个教程很实用。对于学习ps的朋友来说,这是值得学习的。同时,作者介绍了一种非常简单易懂的方法。 为了进行快速的色彩调整,必须掌握曲线工具,它是基于图像…

ajax实时刷新简单实例

ajax实时刷新简单实例

实时,简单实例,刷新,电脑软件,ajax,本文介绍了ajax实时刷新的简单实现方法,供大家共享,供大家参考: ajax自动刷新似乎是一个很常见的问题,之前做的一个网络聊天程序就是上面的卡片,经过这段时间的学习,终于做了一个代码框架,可以自动刷新页面,希望…

什么是PS图象处理软件不显示当它安

什么是PS图象处理软件不显示当它安

安装,显示,图象,当它,处理软件,什么是PS图象处理软件不显示当它安装有时,当使用ps进行设计时,您需要使用一些特殊字体来突出设计的意义。但是,当您直接从系统文件夹中找到系统磁盘时,打开ps,但不要显示它。这个时候我该怎么办共享下面的解决方案…

对Nodejs教程的介绍

对Nodejs教程的介绍

教程,电脑软件,Nodejs,前言 如果我们不学习nodejs,我们会老。当HTML5的大浪来了,许多祖先开始旅行Nodejs。当时,我还在做服务器端程序。 后来,前端和梯队之间的距离非常大。因为我一直在服务器端语言很长一段时间,到目前为止,我已经学习nodejs…