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 相关文章推荐
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
Jun 16 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
php学习笔记之基础知识
Nov 08 PHP
php文件夹的创建与删除方法
Jan 24 PHP
Laravel5中contracts详解
Mar 02 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
php+html5基于websocket实现聊天室的方法
Jul 17 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
php源码的安装方法和实例
Sep 26 PHP
laravel入门知识点整理
Sep 15 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 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安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
完美的php分页类
2017/10/24 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
JavaScript中的其他对象
2008/01/16 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
在Python中定义和使用抽象类的方法
2016/06/30 Python
python正则表达式面试题解答
2020/04/28 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
英语专业个人求职自荐信
2013/09/21 职场文书
生产车间实习自我鉴定
2013/09/23 职场文书
大学生学习生活的自我评价
2013/11/01 职场文书
总经理司机职责
2014/02/02 职场文书
城管综合整治方案
2014/05/01 职场文书
单位工作证明范文
2014/09/14 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
百万英镑观后感
2015/06/09 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技