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 高手之路(一)
Oct 09 PHP
php header()函数使用说明
Jul 10 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
php中获取关键词及所属来源搜索引擎名称的代码
Feb 15 PHP
php阻止页面后退的方法分享
Feb 17 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 PHP
Yii CGridView用法实例详解
Jul 12 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
php 实现银联商务H5支付的示例代码
Oct 12 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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 array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
PHP 单引号与双引号的区别
2009/11/24 PHP
php汉字转拼音的示例
2014/02/27 PHP
linux中cd命令使用详解
2015/01/08 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
新闻内页-JS分页
2006/06/07 Javascript
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
基于jquery实现五星好评
2017/11/18 jQuery
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
JS检测浏览器开发者工具是否打开的方法详解
2020/10/02 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
Python书单 不将就
2017/07/11 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python线程join方法原理解析
2020/02/11 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
春节活动策划方案
2014/01/24 职场文书