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 相关文章推荐
一个简单的自动发送邮件系统(三)
Oct 09 PHP
php 删除记录实现代码
Mar 12 PHP
windows下zendframework项目环境搭建(通过命令行配置)
Dec 06 PHP
记录mysql性能查询过程的使用方法
May 02 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
Drupal7中常用的数据库操作实例
Mar 02 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
Jul 09 PHP
php微信公众平台开发之微信群发信息
Sep 13 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 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实现框架(二)
2006/10/09 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
php图片上传类 附调用方法
2016/05/15 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
jquery 模板的应用示例
2013/11/12 Javascript
解决jquery实现的radio重新选中的问题
2015/07/03 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
python实现外卖信息管理系统
2018/01/11 Python
python学生信息管理系统(完整版)
2020/04/05 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
python数据归一化及三种方法详解
2019/08/06 Python
python 公共方法汇总解析
2019/09/16 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
Numpy数组的广播机制的实现
2020/11/03 Python
Python脚本调试工具安装过程
2021/01/11 Python
追悼会上的答谢词
2014/01/10 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
学校后勤岗位职责
2014/02/19 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
租房协议书范例
2014/10/14 职场文书
广告业务员岗位职责
2015/02/13 职场文书
关于迟到的检讨书
2015/05/06 职场文书
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL