php防注入及开发安全详细解析


Posted in PHP onAugust 09, 2013

1、PHP注入的基本原理
程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对 用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据 库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的 SQL Injection,即SQL注入。 受影响的系统:对输入的参数不进行检查和过滤的系统.

SQL注入过程
正常来讲,我们通过地址接收一些必要的参数如:
页面中我们会使用 2 写入到SQL语句中
正常情况:Select * From Table where id=2

PHP100.php?id=2
如果我们对SQL语句熟悉,就知道2 我们可以替换成我们需要的SQL语句
如:and exists (select id from admin)

2、防止注入的几种办法
其实原来就是我们需要过滤一些我们常见的关键字和符合如:
Select,insert,update,delete,and,*,等等
例子:

function inject_check($sql_str) {
return preg_match('/select|insert|update|delete|/'|///*|/*|/././/|/.//|union|into|load_file|outfile/i', $sql_str);      // 进行过滤
}

或者是通过系统函数间的过滤特殊符号
Addslashes(需要被过滤的内容)

3、PHP其他地方安全设置
register_globals = Off 设置为关闭状态
SQL语句书写时尽量不要省略小引号和单引号

Select * From Table Where id=2 (不规范)
Select * From ·Table· Where ·id·='2' (规范)

提高数据库命名技巧,对于一些重要的字段可根据程序特点命名
对于常用方法加以封装,避免直接暴露SQL语句

正确的使用 $_POST $_GET $_SESSION 等接受参数,并加以过滤

PHP 相关文章推荐
php中var_export与var_dump的区别分析
Aug 21 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
PHP多个版本的分析解释
Jul 21 PHP
自定义session存储机制避免会话保持问题
Oct 08 PHP
PHP中上传多个文件的表单设计例子
Nov 19 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
php简单获取目录列表的方法
Mar 24 PHP
详谈PHP编码转换问题
Jul 28 PHP
PHP常用的排序和查找算法
Aug 06 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 #PHP
解析isset与is_null的区别
Aug 09 #PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 #PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 #PHP
浅析php变量作用域的一些问题
Aug 08 #PHP
解析php开发中的中文编码问题
Aug 08 #PHP
php中jpgraph类库的使用介绍
Aug 08 #PHP
You might like
php数组(array)输出的三种形式详解
2013/06/05 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
Python使用minidom读写xml的方法
2015/06/03 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python感知机实现代码
2019/01/18 Python
Django--权限Permissions的例子
2019/08/28 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
python 5个顶级异步框架推荐
2020/09/09 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
几道PHP的面试题
2012/05/19 面试题
如何删除一个表里面的重复行
2013/07/13 面试题
什么是Smart Navigation?
2016/07/03 面试题
编程输出如下图形
2013/11/24 面试题
主管职责范文
2013/11/09 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
离职报告范文
2014/11/04 职场文书
Python OpenCV形态学运算示例详解
2022/04/07 Python
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL