PHP与SQL注入攻击[三]


Posted in PHP onApril 17, 2007

这几天太忙,继续连载哈哈,争取半个月结束。

上文说到数据库自带的不安全输入过滤功能,但这样的功能不是所有数据库都有的。目前大概只有MySQL,SQLite,PostgreSQL,Sybase带有这样的功能,而包括Oracle和SQL Server在内的很多数据库都没有。

鉴于这样的情况,一般开发者采用一种通用的方法来避免不安全的数据写入数据库--base64编码。这样可以避免所有可能引起问题的特殊字符造成的危险。但Base64编码后的数据容量大概会增加33%,比较占用空间。在PostgreSQL中,使用Base64编码数据还有个问题,就是无法使用'LIKE'查询。

所以总结这么多,我们知道光靠数据库自身的字符串屏蔽也是不行的。我们需要一种解决方案,在特殊字符影响到我们的Query语句之前,就把危险的字符过滤掉。预定义查询(Prepared queries/prepared statements)是一个非常好的方法。什么是预定义查询呢? 它就相当于一个查询语句的模板,定义了查询语句的结构和某些部份的数据类型。如果我们提交的SQL语句符合这个模板的定义,就执行,否则就不执行,报出错误。

例如:

pg_query($conn, “PREPARE stmt_name (text) AS SELECT * FROM users WHERE name=$1”);
pg_query($conn, “EXECUTE stmt_name ({$name})”);
pg_query($conn, “DEALLOCATE stmt_name”);

PREPARE stmt_name (text) AS ..定义了一个查询的格式,这里除了$1之外的所有字符都是占位符,不允许更改。呵呵,我觉得这种方法实在是个好方法。不过可惜不是所有数据库都支持。。

PHP 相关文章推荐
php中的时间显示
Jan 18 PHP
php中文本操作的类
Mar 17 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
php抽奖小程序的实现代码
Jun 18 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
php Session无效分析资料整理
Nov 29 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
php使用QueryList轻松采集js动态渲染页面方法
Sep 11 PHP
PHP与SQL注入攻击[二]
Apr 17 #PHP
PHP与SQL注入攻击[一]
Apr 17 #PHP
使用Xdebug调试和优化PHP程序之[1]
Apr 17 #PHP
php下用GD生成生成缩略图的两个选择和区别
Apr 17 #PHP
15种PHP Encoder的比较
Apr 17 #PHP
dede全站URL静态化改造[070414更正]
Apr 17 #PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
Apr 16 #PHP
You might like
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
ECMAScript6--解构
2017/03/30 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
基于js中this和event 的区别(详解)
2017/10/24 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
python模仿网页版微信发送消息功能
2018/02/24 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
运动会广播稿300字
2014/01/10 职场文书
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
法学院方阵解说词
2014/01/29 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
测量员岗位职责
2015/02/14 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
Redis 异步机制
2022/05/15 Redis
V Rising 服务器搭建图文教程
2022/06/16 Servers