Linux系统安全(八):PHP 安全

2019 年 8 月 24 日

Linux系统安全(八):PHP 安全

PHP 是流行的 Web 开发语言,也是部署广泛的网站运行时环境。


PHP 配置的安全选项


在配置 PHP 运行时环境时,需要重点关注的安全选项包括:


禁止将 PHP 报错信息输出给用户。如果 PHP 报错信息直接输出给用户,则可能会泄露服务器或者数据库配置信息。如图 8-5 所示:



图 8-5 PHP 报错信息泄露代码结构


禁止将 PHP 报错信息输出给用户的配置方法是在 php.ini 中增加以下内容:


expose_php = Off #在HTTP头部中隐藏PHP信息error_reporting = E_ALL #报告所有错误和警告display_errors = Off #禁止把错误信息显示在客户端输出中display_startup_errors = Off #禁止把启动错误显示在客户端输出中log_errors = On #记录错误error_log = /valid_path/PHP-logs/php_error.log #指定错误文件的路径ignore_repeated_errors  = Off #禁止忽略重复的错误
复制代码


PHP 的通用安全配置。在 php.ini 中增加以下内容:


open_basedir = /path/DocumentRoot/PHP-scripts/ #只允许PHP访问该路径下的文件allow_url_fopen = Off #禁止PHP打开远程文件allow_url_include = Off #禁止PHP包含远程文件variables_order = "GPSE" #设置变量的解析顺序allow_webdav_methods = Off #禁用webdav方法
复制代码


PHP 上传文件的安全处理。在 php.ini 中增加以下内容:


file_uploads = On #是否启用文件上传,如不需要,则配置为Offupload_tmp_dir = /path/PHP-uploads/ #指定上传文件的临时目录upload_max_filesize = 2M #指定允许上传的最大文件大小
复制代码


PHP 执行文件的安全处理。在 php.ini 中增加以下内容:


enable_dl = Off #禁止动态加载模块    disable_functions = system, exec, shell_exec, passthru, phpinfo, show_source, popen, proc_open, fopen_with_path, dbmopen, dbase_open, putenv, move_uploaded_file, chdir, mkdir, rmdir, chmod, rename, filepro, filepro_rowcount, filepro_retrieve, posix_mkfifo #禁用危险函数,很多Webshell正是使用了这些危险函数来实现恶意功能
复制代码


PHP 会话(Session)的安全处理。在 php.ini 中增加以下内容:


session.cookie_secure = On #仅在HTTPS安全连接情况下传输session.cookie_httponly = 1 #在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击session.gc_maxlifetime  = 600 #设置会话过期时间
复制代码


保持 PHP 版本更新。每次在官方发布 PHP 新版本后,其支持周期为 3 年,在此期间,官方会发布小版本修复漏洞。因此,笔者建议,系统管理员需要关注官方网站(http://php.net)来进行 PHP 版本升级,以避免旧版本的漏洞被黑客利用而导致网站被入侵。


PHP 开发框架的安全


对于 PHP 开发者来说,还需要特别注意使用到的 PHP 开发框架的安全。例如,在知名漏洞搜索平台https://www.seebug.org上以关键字“ThinkPHP”检索得出的高危漏洞就多达 34 个,如图 8-6 所示:



图 8-6 ThinkPHP 框架高危漏洞示例


本文内容来自作者图书作品《Linux 系统安全:纵深防御、安全扫描与入侵检测》,点击购买


2019 年 8 月 24 日 09:0010396

评论

发布
暂无评论
发现更多内容

数据为墨,智能作笔:画一卷新姑苏繁华图

脑极体

Serverless 落地之痛怎么解?

阿里巴巴中间件

Serverless

附PPT丨AWS基于数据湖构建云上的数据分析架构

dbaplus社群

数据湖 AWS

12张图带你彻底理解分布式事务!!

冰河

分布式事务 BASE理论 TCC ACID CAP理论

用大白话给你解释Zookeeper的选举机制

爱笑的架构师

zookeeper ZooKeeper原理 七日更

wildfly 21的domain配置

程序那些事

程序那些事 wildfly wildfly21 配置管理 domain模式

夜莺二次开发指南-监控系统(1)

秦叶宁

生产环境全链路压测建设历程 18:某快递 A 股上市公司的生产压测案例之中篇

数列科技杨德华

全链路压测 七日更

《数据分析》PDF免费下载

计算机与AI

数据分析

夜莺二次开发指南-监控系统(2)

秦叶宁

30G 上亿数据的超大文件,如何快速导入生产环境?

楼下小黑哥

Java MySQL 并发编程 线程池

Go中的Channel背后的设计哲学

soolaugust

go Go Concurrency Patterns 七日更 CSP

最有技术含量的面试

escray

面经 面试经历 101次面试 七日更 十日谈

低代码与零代码工具的这些特征,弥补了所有人和IT之间的差距!

低代码指南

程序员 互联网 开发者 软件开发 开发工具

彩色的线,数据的诗,你好——贵州鲲鹏!

脑极体

[git使用技巧] git提交忽略不必要的文件或文件夹

xcbeyond

git 七日更

Nginx常见典型故障|Linux干货

赖猫

c++ nginx Linux

TypeScript | 第三章:函数、泛型和枚举

梁龙先森

typescript 编程 前端 七日更

世界之书:《禅与摩托车维修艺术》与发现良质

lidaobing

28天写作营 禅与摩托车维修艺术

“社恐”独处好去处:无人自习室,一个人的“世外桃源”

IoT云工坊

物联网 无人自习室 智能门禁 智能灯控 线上预约

如何成为架构师?

xcbeyond

个人成长 架构师 七日更

单点破局思维|技术人应知的创新思维模型(8)

Alan

个人成长 28天写作营 技术人应知的创新思维模型 七日更

Shell简介

入门小站

Shell

Spring Cloud 2020.0.0正式发布,再见了Netflix

YourBatman

Spring Cloud Spring Boot netflix 2020.0.0

手写线程池,对照学习ThreadPoolExecutor线程池实现原理!

小傅哥

Java 小傅哥 线程池 七日更 ThreadPoolExecutor

SQL优化最干货总结-MySQL「2020年终总结版」

Java架构师迁哥

业务中台建设 - 配置化

孝鹏

中台 微服务 配置化开发

JDK 16 即将发布,新特性速览!

xcbeyond

Java 七日更

揭秘大流量场景下发布如丝般顺滑背后的原因

阿里巴巴中间件

阿里巴巴

代码零改动Serverless架构升级?这家在线编程教育企业是这么做的

阿里巴巴中间件

Python Serverless

语音助手中的复杂语义表达方法

DataFunTalk

AI nlp

Linux系统安全(八):PHP 安全-InfoQ