PHP 是使用最广泛的脚本编程语言之一。市场份额充分说明了其主导地位。 PHP 7 的推出使这种编程语言对当前的开发人员更具吸引力。尽管发生了一些变化,许多开发人员仍然对 PHP 的未来持怀疑态度。原因之一是 PHP 的安全性。
【www.gsm-guard.net快速翻译】PHP是使用最广泛的脚本编程语言之一。市场份额充分说明了其主导地位。 PHP 7 的推出使这种编程语言对当前的开发人员更具吸引力。尽管发生了一些变化,许多开发人员仍然对 PHP 的未来持怀疑态度。原因之一是 PHP 的安全性。
PHP 的安全性是开发人员最关心的问题。尽管 PHP 从内到外提供了可靠的安全性,但正确实现这些安全机制取决于开发人员。我们将在本文中为 Linux 管理员介绍几个 PHP 安全点。这些要点将帮助您保护 Web 应用程序并确保长期正常运行。
在开始之前,有必要了解我们正在处理的系统。出于演示目的,我们使用 Fedora。但是,这些要点应该适用于 Ubuntu 版本或任何其他 Linux 发行版。查看您的操作系统发行版的手册以获取更多信息。
让我们仔细看看我们系统环境的几个关键文件。您的文件应类似于或对应于以下内容:
默认网络服务器:Apache
文档根目录:/var/www/html
PHP配置文件:/etc/php.ini
扩展配置目录:/etc/php.d/
安全文件:/etc/php.d/security.ini
这些技巧将保护您的网站免受不同类型的常见攻击,例如 SQL 注入、XSS、跨站请求伪造、eval() 和文件上传攻击。可以在此处找到常见攻击的列表 (https://www.gsm-guard.net/top-10-php-security-vulnerability/)。
1.删除不需要的模块。
PHP 带有内置的 PHP 模块。它们对于许多任务都很有用,但并不是每个项目都需要它们。只需输入以下命令即可查看可用的 PHP 模块:
#php-m
查看列表后,您现在可以删除不必要的模块。减少模块数量有助于提高您所使用的 Web 应用程序的性能和安全性。
2.限制PHP信息泄露。
平台泄露关键信息是很常见的。例如,PHP 会泄露版本及其安装在服务器上的事实等信息。这可以通过expose_php命令来实现。为了防止泄露,需要在/etc/php.d/security.ini中将该命令设置为off。
hide_php=关闭
如果您需要了解版本及其状态,只需针对网站地址运行简单的 Curl 命令即可获取该信息。
卷曲 - 我 http://www.gsm-guard.net/index.php
前面的命令将返回以下信息:
HTTP/1.1 200 OK X-Powered-By: PHP/7.0.10 内容类型: text/html;字符集=UTF-8
3. 禁用远程代码执行。
远程代码执行是PHP安全系统中常见的安全漏洞之一。默认情况下,您的系统启用远程代码执行。 “allow_url_fopen”命令允许 require、include 或 URL 感知的 fopen 包装器等函数直接访问 PHP 文件。通过HTTP或FTP协议实现远程访问,导致系统无法防御代码注入安全漏洞。
为了确保您的系统安全可靠并远离远程代码执行,您可以将此命令设置为“关闭”,如下所示:
allow_url_fopen=关闭allow_url_include=关闭
4. 记录 PHP 错误。
加强 Web 应用程序安全性的另一个简单方法是不向访问者显示错误。这将确保黑客根本无法损害网站的安全。需要在 /etc/php.d/security.ini 文件中进行编辑。
显示错误=关闭
现在您可能会想:完成这一步后,“开发人员如何在没有错误消息帮助的情况下进行调试?”开发者可以使用log_errors命令进行调试。他们只需在 security.ini 文件中将 log_errors 命令设置为“On”即可。
log_errors=打开 error_log=/var/log/httpd/php_scripts_error.log
5、合理控制资源。
为了确保应用程序的安全,控制资源非常重要。为了确保正确执行和安全,您需要限制 PHP 脚本执行。此外,解析请求数据所花费的时间应该受到限制。如果控制执行时间,脚本使用的其他资源(例如内存)也应该进行相应配置。所有这些指标都可以通过编辑 security.ini 文件来管理。
# 以秒为单位设置 max_execution_time = 25 max_input_time = 25 memory_limit = 30M
6.禁用危险的PHP函数
PHP 附带了对开发有用的函数,但也有大量函数可被黑客用来侵入 Web 应用程序。禁用这些函数可以提高整体安全性并确保您不会接触到危险的 PHP 函数。
为此,您首先需要编辑 php.ini 文件。进入文件后,找到disable_functions命令并禁用其中的危险函数。为此,您只需复制/粘贴以下代码。
disable_functions =exec、passthru、shell_exec、系统、proc_open、popen、curl_exec、curl_multi_exec、parse_ini_file、show_source
您可以在此处了解有关禁用危险 PHP 函数的更多信息 (https://www.gsm-guard.net/blog/webhosting/dangerous-php-functions-must-be-disabled/)。
7. 上传文件。
如果您的应用程序不需要上传任何文件,则禁用上传文件的功能有助于提高安全性。如果想禁止用户上传文件,只需编辑/etc/php.d/目录下的security.ini文件,将file_uploads命令设置为OFF即可。
file_uploads=关闭
8.保持版本最新。
开发人员全天候 (24/7) 工作来修补您使用的技术。 PHP 也是如此。由于它有一个开源社区,因此会定期发布补丁和修复程序。更新版本还针对第一天漏洞和其他安全漏洞提供了安全补丁。如果您关心应用程序安全性,请始终确保您的 PHP 解决方案是最新的。此外,对其他相关技术应用最新补丁可以确保最大程度的安全性。
9. 控制文件系统访问。
默认情况下,PHP 可以使用 fopen() 等函数来访问文件。访问由 open_basedir 命令提供。首先,始终将 open_basedir 命令设置为 /var/www/html 目录。将其设置为任何其他目录可能会导致安全问题。open_basedir="/var/www/html/"
10.控制POST大小。
我们最后一个 PHP 安全点是控制 POST 大小功能。 HTTP POST 功能使用客户端浏览器将数据发送到 Web 服务器。例如,用户可以上传证书,然后将其发送到 Web 浏览器进行处理。一切都运行得很顺利,直到有一天,一名黑客试图发送一个巨大的文件,耗尽了服务器的资源。这很可能会导致服务器崩溃或响应缓慢。为了保护服务器免受此漏洞的影响,需要设置POST大小。 POST 大小可以在 /etc/php.d/security.ini 文件中设置。
post_max_size=1k
结论
安全性是 Web 开发人员和 Linux 管理员最关心的问题之一。如果采取以上几点,您将能够加强您的开发环境和 PHP Web 应用程序的安全性。如果您认为我们遗漏了一些重要的内容,请留言添加。
原标题:Linux 管理员的 10 个 PHP 安全提示,作者:Damian Wolf
【51CTO翻译,合作网站转载请注明原文译者及出处:www.gsm-guard.net】