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扩展函数
Oct 09 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
Jun 21 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
Smarty使用自定义资源的方法
Aug 08 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
php ajax异步读取rss文档数据
Mar 29 PHP
PHP函数import_request_variables()用法分析
Apr 02 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
Oct 24 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下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
Js sort排序使用方法
2011/10/17 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
js重写方法的简单实现
2016/07/10 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
浅谈React碰到v-if
2018/11/04 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
python print出共轭复数的方法详解
2019/06/25 Python
python线性插值解析
2020/07/05 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
八一建军节慰问信
2015/02/14 职场文书
个人向公司借款协议书
2016/03/19 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技