文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络技术黑客技术攻防技巧PHP数据库安全之SQL注入
精品推荐
特别推荐
·简单方法查找黑客老巢
·一次入侵过程的公开分析
·快速利用135端口入侵个人电脑
·基础知识 初级黑客安全技术命令详解
·IPC$入侵的高级手段与方法
·在QQ上与任意陌生人聊天的新绝招
·“黑客”教你如何远程控制计算机
·多种DDoS攻击技术方法
·黑客入侵前的信息收集
·看黑客如何发动对电子邮件系统的攻击
·经典:各个网络端口的入侵方法
·防范黑客 从两大方面阻止域名被劫持
·黑客、红客、蓝客、飞客究竟是什么?
·认清虚虚实实的“ARP攻击”防御方法
·黑客知识 彻底堵死SQL注入工具漏洞
·赛迪网"IT技术百家讲坛"开讲 如何防御黑客?
·黑客如何利用DNS欺骗在局域网中挂马
·Windows黑客编程基础
·黑客很狡猾 如何减轻DDoS攻击危害?
·网络攻击的几种攻击与防御手法大揭秘
热点TOP10
·最详细的黑客入门法则
·“黑客”教你如何远程控制计算机
·我是怎么进入他人计算机的
·黑客技术之知道对方IP入侵别人的电脑
·经典常见计算机密码破解实用手册
·不用任何软件(木马程序)盗取账号密码
·从零开始学黑客:网络黑客新手入门指南
·基础知识 初级黑客安全技术命令详解
·Windows黑客编程基础
·流光5.0使用小窍门
·菜鸟变黑客高手
·Telnet高级入侵攻略及原理
·收费网站破解攻略
·谁能知道微软在你的计算机里隐藏的秘密
·黑客破解电脑密码实用技巧大全!
·迎刃而解——破解密码的常用工具
·经典:各个网络端口的入侵方法
·快速利用135端口入侵个人电脑
·用IE即可轻松远程控制对方电脑
·让对方QQ掉线代码

攻防技巧PHP数据库安全之SQL注入

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



  ...;";

  ?>

  下面这个可怕的例子将会演示如何在某些数据库上执行系统命令。 例子 27-5. 攻击数据库所在主机的操作系统(MSSQL Server)

  

  $query = "SELECT * FROM products WHERE id LIKE '%$prod%'";

  $result = mssql_query($query);

  ?>

  如果攻击提交 a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- 作为变量 $prod的值,那么 $query 将会变成

  

  $query = "SELECT * FROM products

   WHERE id LIKE '%a%'

   exec master..xp_cmdshell 'net user test testpass /ADD'--";

  $result = mssql_query($query);

  ?>

  MSSQL 服务器会执行这条 SQL 语句,包括它后面那个用于向系统添加用户的命令。如果这个程序是以 sa 运行而 MSSQLSERVER 服务又有足够的权限的话,攻击者就可以获得一个系统帐号来访问主机了。

  注: 虽然以上的例子是针对某一特定的数据库系统的,但是这并不代表不能对其它数据库系统实施类似的攻击。使用不同的方法,各种数据库都有可能遭殃。

  预防措施

  也许有人会自我安慰,说攻击者要知道数据库结构的信息才能实施上面的攻击。没错,确实如此。但没人能保证攻击者一定得不到这些信息,一但他们得到了,数据库有泄露的危险。如果你在用开放源代码的软件包来访问数据库,比如论坛程序,攻击者就很容得到到相关的代码。如果这些代码设计不良的话,风险就更大了。

  这些攻击总是建立在发掘安全意识不强的代码上的。所以,永远不要信任外界输入的数据,特别是来自于客户端的,包括选择框、表单隐藏域和cookie。就如上面的第一个例子那样,就算是正常的查询也有可能造成灾难。

  永远不要使用超级用户或所有者帐号去连接数据库。要用权限被严格限制的帐号。

  检查输入的数据是否具有所期望的数据格式。PHP 有很多可以用于检查输入的函数,从简单的变量函数和字符类型函数(比如 is_numeric(),ctype_digit())到复杂的 Perl 兼容正则表达式函数都可以完成这个工作。

  如果程序等待输入一个数字,可以考虑使用 is_numeric() 来检查,或者直接使用 settype() 来转换它的类型,也可以用 sprintf() 把它格式化为数字。 例子 27-6. 一个实现分页更安全的方法

  

  settype($offset, 'integer');

  $query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";

  // 请注意格式字符串中的 %d,如果用 %s 就毫无意义了

  $query = sprintf("SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET %d;",

   $offset);

  ?>

  使用数据库特定的敏感字符转义函数(比如 mysql_escape_string() 和 sql_escape_string())把用户提交上来的非数字数据进行转义。如果数据库没有专门的敏感字符转义功能的话 addslashes() 和 str_replace() 可以代替完成这个工作。看看第一个例子,此例显示仅在查询的静态部分加上引号是不够的,查询很容易被攻破。

  要不择手段避免显示出任何有关数据库的信心,尤其是数据库结构。参见错误报告和错误处理函数。

  也可以选择使用数据库的存储过程和预定义指针等特性来抽象数库访问,使用户不能直接访问数据表和视图。但这个办法又有别的影响。

  除此之外,在允许的情况下,使用代码或数据库系统保存查询日志也是一个好办法。显然,日志并不能防止任何攻击,但利用它可以跟踪到哪个程序曾经被尝试攻击过。日志本身没用,要查阅其中包含的信息才行。毕竟,更多的信息总比没有要好。

  add a note User Contributed Notes

  SQL 注入

  17-Mar-2006 01:48

  If you use the PEAR package and prepare() / execute() your queries,

  you will hardly have to worry about any of this. Of course, it's still

  a good idea to make sure you're putting valid data in your database...

  bee at askbee dot net

  17-Nov-2005 06:52

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




上一篇:了解数据容灾,你需要第三方灾难备份吗?

下一篇:专家视点:防火墙防控DDOS攻击三步曲

攻防技巧PHP数据库安全之SQL注入 相关文章:
·电脑高手的140个电脑技巧
·《拳皇2002》隐藏超杀出招表 - 技巧心得
·楼梯的上做爱技巧 (图)
·太阁立志传4 攻略及技巧
·新出QQ技巧十六招
·WindowsXP超级技巧
·Vista系统使用技巧总结
·IE浏览器再现严重安全漏洞 微软紧急发补丁程序
·Windows XP的20个超级实用技巧大全
·绝对好用的注册表技巧
攻防技巧PHP数据库安全之SQL注入 相关软件:
·Kaspersky(卡巴斯基) Internet Security 安全套装 V6.0.2.621 中文版
·招聘面试技巧 视频教程
·中文版Excel 2003实例与技巧
·交际-电话沟通技巧
·摄影技巧与欣赏
·如何加固Windows XP 主机安全
·中文版 AutoCAD2004 应用实例与技巧
·电脑技巧精彩文章一百篇
·美萍安全卫士v12.3
·温瑞安全集

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot