PHP安全技术之 实现php基本安全


Posted in PHP onSeptember 04, 2010

1.不要依赖注册全局变量功能(register_globals)

注册全局变量的出现曾经让PHP变得非常易用,但也降低了安全性(方便之处经常会破坏安全性)。建议在编程时把register_globals指令关闭,在PHP6中这个功能也会被取消。

2.在使用变量之前对其进行初始化。

如果register_globals功能是启动的,即使程序员不使用它,恶意用户也可能利用为初始化变量的漏洞来侵入我们的系统。比如:

if(conditon){

$auth=TRUE;

}

如果变量$auth没有在这段之前被初始化为FALSE,那么用户就可以向脚本传递$_GET[‘auth']、$_POST[‘auth']或$_COOKIE[‘auth']轻易的实现验证。

3.检验和净化全部输入数据。

4.在利用变量引用包含文件时要小心。

如果脚本中有这样的代码:

require($page);

那么就应该确保$page不会来自外部资源(比如$_GET),或者,如果它的确来自于外部资源,那么就要确保它包含适当的值。

5.在使用任何服务器上执行命令的函数都要多加小心。

这些函数包括eval()、exec()、system()、passthru()、popen()和反撇号(``)。这些函数都能够在服务器上执行命令,永远都不要随意使用。如果在命令里不得不包含便来那个,就应该对这个变量进行彻底的安全检查。还应该使用escapeshellarg() escapeshellcom()进行额外的预处理。

6.更改默认的会话目录,或者使用数据库保存会话数据。

7.不要使用浏览器提供的文件名在服务器上保存上传的文件。

8.如果被提交的数据需要在web页面中重新显示,一定要注意其中的HTML,更重要的是JAVASCRIPT

可以利用函数

string htmlspecialchars ( string string [, int quote_style [, string charset]])

对提交的数据进行处理

9。不要在站点上暴露你的PHP错误信息

PHP错误信息能够在你开发的过程中把错误信息输出方便你的检查,但是如果暴露在Web上面,很可以成为攻击者的入口。

10.防止SQL注入攻击。

应该使用特定语言的数据库转义函数,比如mysqli_real_escape_data(),确保提交的内容不会破坏查询操作。

11.永远不要在服务器上保存phpinfo()脚本。

PHP 相关文章推荐
php 获取本机外网/公网IP的代码
May 09 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
phpstrom使用xdebug配置方法
Dec 17 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
php自定义时间转换函数示例
Dec 07 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
Ajax+PHP实现的分类列表框功能示例
Feb 11 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 PHP
小文件php+SQLite存储方案
Sep 04 #PHP
PHP中文件上传的一个问题
Sep 04 #PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 #PHP
PHP开发需要注意的安全问题
Sep 01 #PHP
php中函数的形参与实参的问题说明
Sep 01 #PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 #PHP
PHP下利用header()函数设置浏览器缓存的代码
Sep 01 #PHP
You might like
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
跟老齐学Python之重回函数
2014/10/10 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
Python3分析处理声音数据的例子
2019/08/27 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
追悼会答谢词范文
2015/09/29 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
在redisCluster中模糊获取key方式
2021/07/09 Redis