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 相关文章推荐
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
PHP 翻页 实例代码
Aug 07 PHP
php写的简易聊天室代码
Jun 04 PHP
php获取汉字首字母的函数
Nov 07 PHP
Yii使用ajax验证显示错误messagebox的解决方法
Dec 03 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 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
德生H-501的评价与改造
2021/03/02 无线电
收集的php编写大型网站问题集
2007/03/06 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
浅谈Python中函数的参数传递
2016/06/21 Python
Python yield 使用方法浅析
2017/05/20 Python
Python实现图片拼接的代码
2018/07/02 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
python列表的逆序遍历实现
2020/04/20 Python
python推导式的使用方法实例
2021/02/28 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
高三高考决心书
2014/03/11 职场文书
自行车广告词大全
2014/03/21 职场文书
中医学专业自荐信范文
2014/04/01 职场文书
学习保证书
2015/01/17 职场文书
英文慰问信
2015/02/14 职场文书
装修公司管理制度
2015/08/05 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL