当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Linux下PHP+Apache的26个必知的安全设置(3)

    栏目:Linux/apache问题 时间:2020-01-14 17:15

    file_uploads=On

    用户通过PHP上传的文件最大1MB

    upload_max_filesize=1M

    第7个设置项:关闭远程代码执行

    如果启用,allow_url_fopen允许PHP的文件函数——如file_get_contents()、include语句和require语句——可以从远程地方(如ftp或网站)获取数据。

    allow_url_fopen选项允许PHP的文件函数——如file_get_contents()、include语句和require语句——可以使用FTP或HTTP协议,从远程地方获取数据。

    编程员们常常忘了这一点,将用户提供的数据传送给这些函数时,没有进行适当的输入过滤,因而给代码注入安全漏洞留下了隐患。基于PHP的Web应用程序中存在的众多代码注入安全漏洞是由启用allow_url_fopen和糟糕的输入过滤共同引起的。编辑/etc/php.d/security.ini,执行以下指令:

    allow_url_fopen=Off

    出于安全原因,我还建议禁用allow_url_include:

    allow_url_include=Off

    第8个设置项:启用SQL安全模式

    编辑/etc/php.d/security.ini,执行以下指令:

    sql.safe_mode=On

    如果启用,mysql_connect()和mysql_pconnect()就忽视传送给它们的任何变量。请注意:你可能得对自己的代码作一些更改。sql.safe_mode启用后,第三方开源应用程序(如WorkdPress)及其他应用程序可能根本运行不了。我还建议你针对所有安装的php 5.3.x关闭magic_quotes_gpc(http://php.net/manual/en/security.magicquotes.php),因为它的过滤并不有效、不是很可靠。mysql_escape_string()和自定义过滤函数能起到更好的作用(向Eric Hansen致谢,https://www.facebook.com/EricHansen.SFU):

    magic_quotes_gpc=Off

    第9个设置项:控制POST请求的大小

    作为请求的一部分,客户机(浏览器或用户)需要将数据发送到Apache Web服务器时,比如上传文件或提交填好的表单时,就要用到HTTP POST请求方法。攻击者可能会企图发送过大的POST请求,大量消耗你的系统资源。你可以限制PHP将处理的POST请求的最大大小。编辑/etc/php.d/security.ini,执行以下命令:

    post_max_size=1K

    1K设置了php应用程序允许的POST请求数据的最大大小。该设置还影响文件上传。要上传大容量文件,这个值必须大于upload_max_filesize。我还建议你限制使用Apache Web服务器的可用方法。编辑httpd.conf,执行针对文件根目录/var/www/html的以下指令:

    Order allow,deny
    ## 可在此添加配置的其余部分... ##

    第10个设置项:资源控制(拒绝服务控制)

    你可以设置每个php脚本的最长执行时间,以秒为单位。另一个建议的选项是设置每个脚本可能用于解析请求数据的最长时间,以及脚本可能耗用的最大内存数量。编辑/etc/php.d/security.ini,执行以下命令:

    设置,以秒为单位

    max_execution_time = 30

    max_input_time = 30

    memory_limit = 40M

    第11个设置项:为PHP安装Suhosin高级保护系统

    来自Suhosin项目网页(http://www.hardened-php.net/suhosin/):

    Suhosin是一款高级的保护系统,面向安装的PHP。它旨在保护服务器和用户,远离PHP应用程序和PHP核心中的已知缺陷和未知缺陷。Suhosin分两个独立部分,可以单独使用,也可以组合使用。第一个部分是针对PHP核心的小补丁,实施了几个低级防护措施,以防范缓冲器溢出或格式字符串安全漏洞;第二个部分是功能强大的PHP加载模块,实施了其他所有的保护措施。

    看看如何在Linux操作系统下安装和配置suhosin(http://www.cyberciti.biz/faq/rhel-linux-install-suhosin-php-protection/)。