文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
网站首页 软件下载
数码学院 网络学院
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院技术开发PHP 学院在PHP中全面阻止SQL注入式攻击之一
精品广告
推荐TOP10
·php优化及高效提速问题小结
·php有哪些优点
·PHP开发框架的现状和展望
·更好的构造开发模板 五种PHP设计模式
·五个常见 PHP 数据库问题
·突破Windows 2003 PHP服务器的新思路
·利用PHP+JavaScript打造AJAX搜索窗
·Discuz! 5.0论坛软件常见问题总结
·Discuz! 5.0论坛安装全功略
·常用PHP论坛程序集合
·PHP 5.0中多态性的实现方案浅析
·PHP一些常用的正则表达式
·X-Space最吸引网民的八大特色
·Discuz! 4.10论坛“傻瓜式”安装教程
·Discuz!论坛安装步骤图文详解
·转换Discuz!两大要求和三个注意点
·Discuz!安装技巧(1):软件环境的配置技巧
·Discuz!使用技巧(2)如何防止用户在论坛恶意灌水?
·如何利用PHP和CSS改变网页文字大小
·PHP环境搭建最新方法
阅读TOP10
·动态网页技术PHP程序字符串处理函数
·7种流行PHP集成开发工具(IDE)的比较
·基于PHP的AJAX技术实现文件异步上传
·实用:使用PHP脚本修改Linux或Unix系统口令
·实例研究PHP函数isset和empty的区别
·15个小时----从修改程序到自己些程序<一>
·详细讲解动态网页制作技术PHP中的函数应用
·用PHP编程开发“虚拟域名”系统
·在PHP中全面阻止SQL注入式攻击之一
·自定义PHP分页函数
·用PHP程序实现支持页面后退的两种方法
·大型Web需求解决方案 PHP定位突出
·php显示网址物理地地址
·实用技巧:PHP中调用Java类的两种方法
·Zend studio提速小技巧
·www.PHP.net 站点用户指南
·在apache下限制每个虚拟主机的并发数!!!!
·用PHP程序实现从数组里筛选出重复的数据
·PHP开发框架总结
·php有哪些优点

在PHP中全面阻止SQL注入式攻击之一

日期:2007年1月19日 作者: 查看:[大字体 中字体 小字体]


  在本系列文章中,我们将全面探讨如何在PHP开发环境中全面阻止SQL注入式攻击,并给出一个具体的开发示例。

  一、 引言

  PHP是一种力量强大但相当容易学习的服务器端脚本语言,即使是经验不多的程序员也能够使用它来创建复杂的动态的web站点。然而,它在实现因特网服务的秘密和安全方面却常常存在许多困难。在本系列文章中,我们将向读者介绍进行web开发所必需的安全背景以及PHP特定的知识和代码-你可以借以保护你自己的web应用程序的安全性和一致性。首先,我们简单地回顾一下服务器安全问题-展示你如何存取一个共享宿主环境下的私人信息,使开发者脱离开生产服务器,维持最新的软件,提供加密的频道,并且控制对你的系统的存取。

  然后,我们讨论PHP脚本实现中的普遍存在的脆弱性。我们将解释如何保护你的脚本免于SQL注入,防止跨站点脚本化和远程执行,并且阻止对临时文件及会话的"劫持"。

  在最后一篇中,我们将实现一个安全的Web应用程序。你将学习如何验证用户身份,授权并跟踪应用程序使用,避免数据损失,安全地执行高风险性的系统命令,并能够安全地使用web服务。无论你是否有足够的PHP安全开发经验,本系列文章都会提供丰富的信息来帮助你构建更为安全的在线应用程序。

  二、 什么是SQL注入

  如果你打算永远不使用某些数据的话,那么把它们存储于一个数据库是毫无意义的;因为数据库的设计目的是为了方便地存取和操作数据库中的数据。但是,如果只是简单地这样做则有可能会导致潜在的灾难。这种情况并不主要是因为你自己可能偶然删除数据库中的一切;而是因为,当你试图完成某项"无辜"的任务时,你有可能被某些人所"劫持"-使用他自己的破坏性数据来取代你自己的数据。我们称这种取代为"注入"。

  其实,每当你要求用户输入构造一个数据库查询,你是在允许该用户参与构建一个存取数据库服务器的命令。一位友好的用户可能对实现这样的操作感觉很满意;然而,一位恶意的用户将会试图发现一种方法来扭曲该命令,从而导致该被的扭曲命令删除数据,甚至做出更为危险的事情。作为一个程序员,你的任务是寻找一种方法来避免这样的恶意攻击。

  三、 SQL注入工作原理

  构造一个数据库查询是一个非常直接的过程。典型地,它会遵循如下思路来实现。仅为说明问题,我们将假定你有一个葡萄酒数据库表格"wines",其中有一个字段为"variety"(即葡萄酒类型):

  1. 提供一个表单-允许用户提交某些要搜索的内容。让我们假定用户选择搜索类型为"lagrein"的葡萄酒。

  2. 检索该用户的搜索术语,并且保存它-通过把它赋给一个如下所示的变量来实现:

  $variety = $_POST['variety'];

  因此,变量$variety的值现在为:

  lagrein

  3. 然后,使用该变量在WHERE子句中构造一个数据库查询:

  $query = "SELECT * FROM wines WHERE variety='$variety'";

  所以,变量$query的值现在如下所示:

  SELECT * FROM wines WHERE variety='lagrein'

  4. 把该查询提交给MySQL服务器。

  5. MySQL返回wines表格中的所有记录-其中,字段variety的值为"lagrein"。

  到目前为止,这应该是一个你所熟悉的而且是非常轻松的过程。遗憾的是,有时我们所熟悉并感到舒适的过程却容易导致我们产生自满情绪。现在,让我们再重新分析一下刚才构建的查询。

  1. 你创建的这个查询的固定部分以一个单引号结束,你将使用它来描述变量值的开始:

  $query = " SELECT * FROM wines WHERE variety = '";

  2. 使用原有的固定不变的部分与包含用户提交的变量的值:

  $query .= $variety;

  3. 然后,你使用另一个单引号来连接此结果-描述该变量值的结束:

  $ query .= "'";

  于是,$query的值如下所示:

  SELECT * FROM wines WHERE variety = 'lagrein'


[1] [2] [3] 下一页 

上一篇:asp.net 实现购物车详细代码

下一篇:看我妙招清除“顽固不化”病毒进程


在PHP中全面阻止SQL注入式攻击之一 相关软件: 在PHP中全面阻止SQL注入式攻击之一 相关文章:
·极视在线网络电视V2.1
·史上最强全功能Win98精简版 39MB 能够在U盘运行的win98
·在大漠那边:林彪坠机真相
·复活之战斗在第三帝国
·终极之我是神的存在
·01.08 七龙珠 1+Z版+GT+剧场分段下载 长期有种 +漫画+壁纸 新种子七龙珠全一种包括全部在8页
·我们的存在 11 RMVB
·《如何在最大的牛市中获利 》精美完全版
·Bokuragaita 我们的存在 10 RMVB 七月新番
·09.08 PPX字幕组 四月新番 玻璃舰队 23 RMVB (最终话发送时间大致在24日)
·免费英语在线翻译
·28个免费在线电影网站
·在Word中输入特殊符号的四种方法
·在Windows XP中运行DOS程序
·从细节设计谈笔记本普遍存在5大缺陷!
·免费在线翻译网
·如何在Windows XP 家庭版中安装IIS
·办公应用心得:在Word中搞数字化
·看男人在电脑里藏A片方法
·破解在线电影多种技巧

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号