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 session 预定义数组
Mar 16 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
php小型企业库存管理系统的设计与实现代码
May 16 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
discuz目录文件资料汇总
Dec 30 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
PHP里的单例类写法实例
Jun 25 PHP
PHP常见错误提示含义解释(实用!值得收藏)
Apr 25 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 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学习之变量的使用
2011/05/29 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
几个有趣的Javascript Hack
2010/07/24 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
荷兰本土平价百货:HEMA
2017/10/23 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
幼儿教师研修感言
2014/02/12 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
国际商务专业求职信
2014/07/15 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
2016年十一促销广告语
2016/01/28 职场文书
Python基础之Socket通信原理
2021/04/22 Python