PHP应用安全漏洞修复

  • 检测到目标FTP服务可匿名访问

检查配置文件 vsftpd.conf 中的 anonymous_enable 配置:

anonymous_enable=NO

可以通过 ps -ef|grep vsftpd 配置文件路径。

  • phpinfo()函数信息泄漏

限制输出 phpinfo() 脚本的访问权限,或者禁止调用 phpinfo() 函数。

禁用phpinfo(),检查 PHP 配置文件php.inidisable_functions 的配置:

disable_functions = phpinfo

如果需要指定多个,以逗号分割:

disable_functions = phpinfo,scandir,exec,chown,putenv
  • PHP配置中未配置open_basedir

open_basedir限制用户访问文件的活动范围:

open_basedir=/www/html/

最后以 / 结尾,若指定为 /www/html,则 /www/html/www/html5 都是可以访问的。

如需要指定多个目录,以冒号分割(Windows下用分号分割):

open_basedir=/www/html/:/tmp/
  • 检测到会话cookie中缺少HttpOnly属性

Refuses access to the session cookie from JavaScript. This setting prevents cookies snatched by a JavaScript injection.

检查 PHP 配置文件php.inisession.cookie_httponly 的配置:

session.cookie_httponly = 1
  • PHP配置中开启了display_errors

检查 PHP 配置文件php.inidisplay_errors 的配置:

display_errors=Off

; display_errors
; Default Value: On
; Development Value: On
; Production Value: Off

; display_startup_errors
; Default Value: Off
; Development Value: On
; Production Value: Off

; error_reporting
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

  • PHP配置中开启了allow_url_fopen

本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件

检查 PHP 配置文件php.iniallow_url_fopen 的配置:

allow_url_fopen=Off
  • 检测到目标X-XSS-Protection响应头缺失

该响应头是用于防范及过滤 XSS 的。

检查 nginx 配置文件 nginx.conf 或被 nginx.conf 进行 inlcude 的相应配置文件:

server {
    add_header X-XSS-Protection "1; mode=block";
}
  • X-XSS-Protection: 0
  • X-XSS-Protection: 1
  • X-XSS-Protection: 1; mode=block
  • X-XSS-Protection: 1; report=

当设置为 0 时,禁用 XSS 过滤
当设置为 1 时,开启 XSS 过滤
当设置为 1; mode=block 时,开启 XSS 过滤,并且若检查到 XSS 攻击,停止渲染页面。
当设置为 1; report=<reporting-uri> 时,开启 XSS 过滤,并且若检查到 XSS 攻击,将使用指导的 url 来发送报告。

  • 检测到目标X-Content-Type-Options响应头缺失

在通的请求响应中,浏览器会根据 HTTP 响应的 Content-Type 来分辨响应的类型。如 text/html 代表 html 文档。 但当响应类型未指定或错误指定时,浏览会尝试启用 MIME-sniffing 来猜测资源的响应类型

检查 nginx 配置文件 nginx.conf 或被 nginx.conf 进行 inlcude 的相应配置文件:

server {
    add_header X-Content-Type-Options nosniff;
}

用来指定浏览器对未指定或错误指定 Content-Type 资源真正类型的猜测行为,nosniff 表示不允许任何猜测。

  • 检测到目标Content-Security-Policy响应头缺失

该响应头主要用于规定页面可以加载那些资源(css/js/img 等)

检查 nginx 配置文件 nginx.conf 或被 nginx.conf 进行 inlcude 的相应配置文件:

server {
    add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'";
}

self:允许来自相同来源的内容(相同的协议、域名和端口)
unsafe-inline:允许加载 inline 资源(例如常见的 style 属性,onclick,inline js 和 inline css 等
unsafe-eval:允许加载动态js代码

如果不特别指定 'unsafe-inline' 时,页面上所有 inline 样式和脚本都不会执行;
不特别指定 'unsafe-eval',页面上不允许使用 new Function,setTimeout,eval 等方式执行动态代码

  • 点击劫持:X-Frame-Options未配置
server {
    add_header X-Frame-Options SAMEORIGIN;
}

该响应头用于是否允许浏览器加载 frame、 iframe、 object 等属性。可以使用该功能来避免 点击劫持

  • X-Frame-Options: DENY
  • X-Frame-Options: SAMEORIGIN
  • X-Frame-Options: ALLOW-FROM https://example.com/

当设置为 DENY 时,站点禁止任何页面被嵌入。
当设置为 SAMEORIGIN 时,只允许加载同源的 frame/iframe/object。
当设置为 ALLOW-FROM 时,只允许加载指定的源。

  • 检测到错误页面web应用服务器版本信息泄露

隐藏 nginx 的版本信息,检查 nginx 配置文件 nginx.conf 或被 nginx.conf 进行 inlcude 的相应配置文件:

server {
    server_tokens off;
}

该响应头用于禁止 nginx 在响应中报文中包含版本信息。

隐藏 php 的版本信息,检查 PHP 配置文件php.iniexpose_php 的配置:

expose_php=Off

发表评论

您的电子邮箱地址不会被公开。