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 31 PHP
如何使用Strace调试工具
Jun 03 PHP
php ios推送(代码)
Jul 01 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
php的ZipArchive类用法实例
Oct 20 PHP
理解php依赖注入和控制反转
May 11 PHP
PHP打印输出函数汇总
Aug 28 PHP
轻松掌握php设计模式之访问者模式
Sep 23 PHP
PHP微信分享开发详解
Jan 14 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 PHP
PHP实现简单日历类编写
Aug 28 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,不用COM,生成excel文件
2006/10/09 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP反射机制用法实例
2014/08/28 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
详解PHP数组赋值方法
2015/11/07 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
php简单压缩css样式示例
2016/09/22 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
线程和进程的区别及Python代码实例
2015/02/04 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
幼儿园小班开学寄语(2016秋季)
2015/12/03 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
导游词之日本富士山
2020/01/06 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
详解Redis瘦身指南
2021/05/26 Redis