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 radio 单选框获取与保持值的实现代码
May 15 PHP
php学习之运算符相关概念
Jun 09 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
PHP实现XML与数据格式进行转换类实例
Jul 29 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
php单链表实现代码分享
Jul 04 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
php模拟实现斗地主发牌
Apr 22 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
ftp类(myftp.php)
2006/10/09 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
理解Javascript_13_执行模型详解
2010/10/20 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
详解Python字符串对象的实现
2015/12/24 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
linux 下selenium chrome使用详解
2020/04/02 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
岗位职责的构建方法
2014/02/01 职场文书
房产委托公证书
2014/04/08 职场文书
新闻发布会策划方案
2014/06/12 职场文书
推普周活动总结
2014/08/28 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang