PHP四大安全策略


Posted in PHP onMarch 12, 2014

一、文件系统安全
php如果具有root权限,且在脚本中允许用户删除文件,那么用户提交数据,不进行过滤,就非常有可能删除系统文件

<?php
// 从用户目录中删除指定的文件
$username = $_POST['user_submitted_name'];
$userfile = $_POST['user_submitted_filename'];
$homedir = "/home/$username";
unlink ("$homedir/$userfile");
echo "The file has been deleted!";
?>
上面的代码,假设用户提交的$userfile值是 ../etc/,那么/etc目录就会被删除
防范文件系统攻击,策略如下

只给php有限的权限
用户提交上来的变量要监测和过滤,不能包含文件路径等特殊字符
尽量避免使用PHP操作文件(删除),如果有这方面的需求,那用户可删除文件也必须是系统生成的随机名称,不可被用户控制
二、数据库安全
数据库安全主要防范的是sql injection,即sql注入攻击,提升数据库安全的策略如下:

不用使用root帐号或者数据库所有者帐号连接数据库,连接数据库限定连接用户的ip
使用php的pdo扩展,有效防止sql注入,除了安全方面的优势,php的pdo扩展在性能方面有有很大优势
请参看 http://php.net/manual/en/pdo.prepared-statements.php
对一些敏感信息进行加密,常见的比如对密码进行加密
三、用户数据过滤
对用户数据过滤,可以防范XSS和CSRF攻击

使用白名单(用户输入是固定模式)的方式
比如用户名只能使用数字字母,那么可以使用函数ctype_alnum判断
对用户输入使用函数 htmlentities或者htmlspecialchars进行处理,输入url不允许传入非http协议
用户身份验证使用令牌 token(csrf)
http://htmlpurifier.org/ HTML Purifier 是开源的防范xss攻击的有效解决方案,
四、其他安全策略
线上环境关闭错误报告(error_reporting,dislay_erros,可在php.ini中配置error_log路径,记录错误信息,这样有助于发现可能的用户攻击)
Register Globals,弃用(移除)的特性,不要使用
魔术引号特性,不要开启,在PHP-5.4中已经被移除
尽量使用PHP的最新版本,最新版本修复了已知的很多安全漏洞和bug
代码中严格遵守上述策略,基本能保证代码不会有太多的安全漏洞,能防范常见攻击。

PHP 相关文章推荐
php Rename 更改文件、文件夹名称
May 24 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
zend framework框架中url大小写问题解决方法
Aug 19 PHP
php中运用http调用的GET和POST方法示例
Sep 29 PHP
php实现utf-8转unicode函数分享
Jan 06 PHP
php实现分页显示
Nov 03 PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 PHP
php中strlen和mb_strlen用法实例分析
Nov 12 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
PHP利用DWZ.CN服务生成短网址
Aug 11 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 #PHP
php使用websocket示例详解
Mar 12 #PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 #PHP
php实现快速排序的三种方法分享
Mar 12 #PHP
php二分查找二种实现示例
Mar 12 #PHP
php遍历文件夹和文件列表示例分享
Mar 11 #PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 #PHP
You might like
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
银行职业规划书范文
2013/12/28 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
采购部部长岗位职责
2014/02/06 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
精神病医院见习报告
2014/11/03 职场文书
2014年度安全工作总结
2014/12/04 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
python 中的jieba分词库
2021/11/23 Python
分享7个 Python 实战项目练习
2022/03/03 Python