提升PHP安全:8个必须修改的PHP默认配置
很明显,PHP+Mysql+Apache是很流行的web技术,这个组合功能强大,可扩展性强,还是免费的。然而,PHP的默认设置对已经上线的网站不是那么适合。下面通过修改默认的配置文件加强PHP的安全策略!
0x01:禁用远程url文件处理功能
像fopen的文件处理函数,接受文件的rul参数(例如:fopen('http://www.yoursite.com','r')).),这个功能可以很轻松的访问远程资源,然而,这是一个很重要的安全威胁,禁用这个功能来限制file function是个不错的选择,在php.ini文件中做如下修改:
0x02:禁用注册全局变量
php在4.2.0以前的版本中,用全局变量作为输入,这个功能叫做register_globals,在web应用中它引起了很多安全问题,因为它允许攻击者在一些情况下很容易的操作全局变量,幸运的是在4.2.0这个功能默认被禁用,它非常的危险,无论在什么情况下都要禁用这个功能。如果某些脚本需要这个功能,那么这个脚本就存在潜在的安全威胁。修改pnp.ini来禁用这个功能:
0x03:限制php的读写操作
在很多web开发的过程中,php脚本需要向本地文件系统进行读写操作,比如/var/www/htdocs/files,为了加强安全,你可以修改本地文件的读写权限:
0x04:Posing Limit
限制PHP的执行时间、内存使用量、post和upload的数据是最好的策略,可以做如下的配置:
max_input_time = 60 ; Max time spent parsing input
memory_limit = 16M ; Max memory used by one script
upload_max_filesize = 2M ; Max upload file size
post_max_size = 8M ; Max post size
0x05:禁用错误消息和启用日志功能
在默认设置中,php会向浏览器输出错误消息,在应用程序的开发过程中,这个默认设置是最合理的配置,然而,它也可以向用户泄漏一些安全信息,例如安装路径和用户名。在已经开发完成的网站中,最好禁用错误消息然后把错误消息输出到日志文件中。
log_errors = On
0x06:隐藏PHP文件
如果没有隐藏PHP文件,我们可以通过多种方法获取服务器PHP的版本,例如使用:http://www.example.com/script.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
显然,我们不希望用户可以直接获取你网站服务器的PHP版本,幸运的是,在php.ini中有个开关可以禁用这个功能:
0x07:安全模式配置
在默认的情况下,php可以配置为安全模式,在这种模式下,Apache禁止访问文件、环境变量和二进制程序,在安全模式下,存在的最大问题就是只有文件的所有者才能访问这写PHP文件,如果有很多开发者共同开发这个程序,这样的设置就不切实际,当你需要访问一个PHP文件时就需要修改这个文件的所有者,另外一个问题就是其它程序也不能访问这些PHP文件,下面的配置就可以修改文件的的权限为用户组而不是单个用户。
safe_mode_gid = On
通过启用safe_mode_gid,能够使用Apache的这个群组就能够访问PHP文件。安全模式对阻止二进制文件的执行也非常有效,然而,开发者却希望在某些特定情形下能够运行一些二进制文件。在这些特殊的情形下,可以将二进制文件放进一个目录中,比如(/var/www/binaries),可以做如下设置:
最后,通过下面的设置,可以访问服务器的环境变量,提供一个以”_“分割的前缀,这样只能访问具有规定前缀的环境变量:
0x08:限制公共用户对具有特定后缀名的文件的访问
由于安全的原因,很多具有特定后缀名的文件不能被公共用户所访问,比如.inc后缀的文件,里面包含了一些敏感的信息,比如mysql连接信息,如果没有适当的配置,那么每个用户都能访问这个配置文件,为了加强网站的安全,你需要在.
.htaccess文件进行如下的配置:
Order allow,deny
Deny from all
</filesmatch>
0x09:总结
PHP的默认配置是面向开发者的,如果网站面向广大的用户,建议重新配置PHP。
提升PHP安全:8个必须修改的PHP默认配置的更多相关文章
- Elasticsearch之重要核心概念(cluster(集群)、shards(分配)、replicas(索引副本)、recovery(据恢复或叫数据重新分布)、gateway(es索引的持久化存储方式)、discovery.zen(es的自动发现节点机制机制)、Transport(内部节点或集群与客户端的交互方式)、settings(修改索引库默认配置)和mappings)
Elasticsearch之重要核心概念如下: 1.cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是 ...
- 修改JQM的默认配置属性
从本文开始,使用 jQuery Mobile 与 HTML5 开发 Web App 系列将会进入第三部分——jQuery Mobile 事件与方法,这其中将会利用之前所讲述的 jQuery Mobil ...
- 以gnome-terminal为例,修改gnome3 的默认配置
gnome连续几个版本的terminal默认配置文件都是同一个配置文件“b1dcc9dd-5262-4d8d-a863-c897e6d979b9”.这是因为gnome的developers编辑了这个配 ...
- StringGrid 实例3: 本例功能: 1、修改 TStringGrid的默认宽与高; 2、添加行; 3、确认当前单元并赋值.
实例3: 本例功能: 1.修改 TStringGrid的默认宽与高; 2.添加行; 3.确认当前单元并赋值. 实例图形:
- horizon 修改local的logging 配置
再部署完horizon的开发环境后,首先要做的就是修改下logging的输出. 我用的开发软件是pycharm, 所以,为了方便在 console里看到输出.需要在 /home/geiao/repo/ ...
- xampp默认mysql密码设置,修改mysql的默认空密码
xampp默认mysql密码设置,修改mysql的默认空密码 分类: xampp2012-09-12 11:24 30264人阅读 评论(5) 收藏 举报 mysqlphpmyadminauthent ...
- linux下修改tomcat的默认目录
1.修改tomcat的默认目录.它的默认目录是webapps/ROOT,对应的conf目录下的server.xml里的内容是: 1.修改tomcat的默认目录.它的默认目录是webapps/ROOT, ...
- ASP.NET MVC 修改视图的默认路径(MVC2,MVC3)
ASP.NET MVC2 修改视图的默认路径 步骤:1.编写继承自WebFormViewEngine的类,重写视图路径 2.在Application_Start()中添加语句: ViewEngines ...
- 如何修改mtk android 默认拍照size
[DESCRIPTION] 修改默认拍照size [SOLUTION] 修改默认的capture size,改变camera feature table的FID_CAP_SIZE default值不起 ...
随机推荐
- camera驱动框架分析(上)【转】
转自:https://www.cnblogs.com/rongpmcu/p/7662738.html 前言 camera驱动框架涉及到的知识点比较多,特别是camera本身的接口就有很多,有些是直接连 ...
- oracle数据库自增主键重复
select max(t.id) from T_PLAT_ENUM_VALUE tdrop sequence T_PLAT_ENUM_VALUE;create sequence T_PLAT_ENUM ...
- centos6.5环境下zookeeper-3.4.6集群环境部署及单机部署详解
centos6.5环境下Zookeeper-3.4.6集群环境部署 [系统]Centos 6.5 集群部署 [软件]准备好jdk环境,此次我们的环境是open_jdk1.8.0_101 zookeep ...
- 区间dp好题cf149d 括号匹配
见题解链接https://blog.csdn.net/sdjzping/article/details/19160013 #include<bits/stdc++.h> using nam ...
- 传统DOM事件处理程序
传统DOM事件处理程序与比HTML事件处理程序相比,优点:可以将HTML和JS脚本分离. 它的操作形式如下 : <body> <div>传统DOM事件处理程序与比HTML事件处 ...
- 2017-2018-2 20155309南皓芯《网络对抗技术》Exp2 后门原理与实践
实验要求 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用socat获取主机操作Shell, 任务计划启动 (0.5分) (3)使用MSF meterpreter( ...
- Android Rom build.prop文件详解
# begin build properties # autogenerated by buildinfo.sh #以下内容由脚本在编译时自动产生 ro.build.id=6.7.7_97 ...
- 《Java程序性能优化》之设计优化
豆瓣读书:http://book.douban.com/subject/19969386/ 第一章 Java性能调优概述 1.性能的参考指标 执行时间: CPU时间: 内存分配: 磁盘吞吐量: 网络吞 ...
- 矩阵优化dp
链接:https://www.luogu.org/problemnew/show/P1939 题解: 矩阵优化dp模板题 搞清楚矩阵是怎么乘的构造一下矩阵就很简单了 代码: #include < ...
- Linux 文件系统与挂载详解
https://blog.csdn.net/baidu_34051990/article/details/60963947