在运行Cronjobs的PHP脚本中将IP地址列入白名单的风险是什么?

阿拉伯奶酪

我的服务器上有一些PHP脚本,可用于定期执行cron作业(例如,用于日常融洽和更新排行榜)。

为了防止局外人手动运行这些脚本(http://url/script.php例如,通过在浏览器中运行),我包含了以下代码,以在运行实际脚本之前检查IP地址。其中XX.XX.XX.XX代表我自己网络的IP地址。

    $remote = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : '127.0.0.1';
    $whitelist = array('XX.XX.XX.XX', '127.0.0.1');

    if (!in_array($remote, $whitelist))
    {
        exit;
    } 

所以现在我有以下问题:

  • 这有多安全?
  • 有什么风险?
  • 我怎样才能使它更安全?
  • 还有其他(更好的)解决方案吗?

PS。我之前的问题已关闭,因为有人认为此问题与带有通配符PHP IP地址白名单相同但是我不是这样!该问题涉及在白名单中使用通配符,而此问题涉及此解决方案的安全性和风险。

斯拉沃米尔·德兹巴(Slawomir Dziuba)

提出的方法并不完全安全。

PHP充当文本预处理器,这意味着在Web服务器网关错误的情况下,脚本内容可以使用mime类型的text / html发送,这可能会泄露敏感数据,例如SQL数据库的密码或(s)ftp帐户。

如果脚本中控制的IP地址是共享(或动态传输)的地址,则公开放置的管理脚本还可能面临未经授权执行的风险。Cron脚本使用php-cli执行,因此不需要任何Web服务器网关,并且如果脚本不在公共目录中,则无需在脚本中进行IP分析。

使用例如curl的远程执行可能是将管理脚本放置在www服务器的公共空间中的唯一原因。这通常是一个较弱的解决方案,因为此脚本随后会使用其他设置执行php解释器(而不是php-cli),通常会大大限制执行时间。但是,如果出于某种原因,它应该位于一个单独的目录中,该目录只能使用.htaccess(和/或.iptables)访问特定的IP地址,并使用htpasswd(基本身份验证)分配给用户名和密码。

理想的情况是www服务器的公共目录(以下称为public)仅包含静态内容(img,css,js ...文件),并且应用程序触发器位于父目录中。示例结构为:

/home/username/domainname/(apps,crons,public,tmp)

apps目录应包含所有应用程序文件和目录。公共目录应仅包含静态内容(用于某些子目录中的顺序)和指向应用程序主文件的符号链接,可以通过以下命令获得该链接:

ln -s ../apps/app.php index.php

某些服务器配置不允许使用符号链接。然后,您可以使用包含以下内容的index.php文件:

<?php
include('/home/username/domainname/apps/app.php');

由于网关发生故障,因此会显示目录结构,因此该解决方案会更糟。但是,敏感数据仍然是安全的,因为Web服务器无法显示不存在的文件的内容。

假设php文件本身在公共Web服务器外部,则所提供的IP分析可用于显示授权地址的部分内容。但是,如果这些网站是整个网站,我希望使用iptables或.htaccess来管理对它们的访问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

IP使用Nginx将单个php文件列入白名单,但仍在运行php

来自分类Dev

在PHP中将网址列入白名单

来自分类Dev

在CentOS 7中将源IP地址列入白名单

来自分类Dev

如何在Azure WAF中将IP地址列入白名单

来自分类Dev

在CentOS 7中将源IP地址列入白名单

来自分类Dev

将IP地址列入白名单centos 6.10

来自分类Dev

带通配符的PHP IP地址白名单

来自分类Dev

如何使用Mod_Security将IP地址列入白名单

来自分类Dev

将Azure WebApp的入站IP地址列入白名单?

来自分类Dev

仅允许列入白名单的IP地址尝试在fail2ban中连接

来自分类Dev

如何仅用一行命令将IP地址列入白名单?

来自分类Dev

在noexec / nosuid挂载中将某些二进制文件和脚本列入白名单?

来自分类Dev

如何在Google Cloud SQL中将私有IP列入白名单?

来自分类Dev

在GCP云运行/功能上使用固定的公共IP(将其列入白名单)

来自分类Dev

JetBrains ToolBox '连接被拒绝' - 要在代理上列入白名单的 URL 是什么?

来自分类Dev

如何在systemd中将单位目录列入白名单

来自分类Dev

Kubernetes Kind中将容器列入白名单的系统

来自分类Dev

如何在phonegap中将URL列入白名单?

来自分类Dev

如何在systemd中将单位目录列入白名单

来自分类Dev

从php阻止文件中重定向列入白名单的IP?

来自分类Dev

API网关将某些IP列入白名单

来自分类Dev

如何将Kubernetes集群列入IP白名单

来自分类Dev

将用于GCP访问的IP列入白名单

来自分类Dev

检查IP是否已被列入URL的白名单?

来自分类Dev

如何在运行Bluhell防火墙附加组件的浏览器上将网站列入白名单?

来自分类Dev

如何在discord.py中将用户列入黑名单和白名单?

来自分类Dev

在Android上将OpenID列入白名单

来自分类Dev

活动未列入白名单

来自分类Dev

当我的ISP提供动态IP地址时,如何将我的IP地址列入白名单以满足公司的需求?

Related 相关文章

  1. 1

    IP使用Nginx将单个php文件列入白名单,但仍在运行php

  2. 2

    在PHP中将网址列入白名单

  3. 3

    在CentOS 7中将源IP地址列入白名单

  4. 4

    如何在Azure WAF中将IP地址列入白名单

  5. 5

    在CentOS 7中将源IP地址列入白名单

  6. 6

    将IP地址列入白名单centos 6.10

  7. 7

    带通配符的PHP IP地址白名单

  8. 8

    如何使用Mod_Security将IP地址列入白名单

  9. 9

    将Azure WebApp的入站IP地址列入白名单?

  10. 10

    仅允许列入白名单的IP地址尝试在fail2ban中连接

  11. 11

    如何仅用一行命令将IP地址列入白名单?

  12. 12

    在noexec / nosuid挂载中将某些二进制文件和脚本列入白名单?

  13. 13

    如何在Google Cloud SQL中将私有IP列入白名单?

  14. 14

    在GCP云运行/功能上使用固定的公共IP(将其列入白名单)

  15. 15

    JetBrains ToolBox '连接被拒绝' - 要在代理上列入白名单的 URL 是什么?

  16. 16

    如何在systemd中将单位目录列入白名单

  17. 17

    Kubernetes Kind中将容器列入白名单的系统

  18. 18

    如何在phonegap中将URL列入白名单?

  19. 19

    如何在systemd中将单位目录列入白名单

  20. 20

    从php阻止文件中重定向列入白名单的IP?

  21. 21

    API网关将某些IP列入白名单

  22. 22

    如何将Kubernetes集群列入IP白名单

  23. 23

    将用于GCP访问的IP列入白名单

  24. 24

    检查IP是否已被列入URL的白名单?

  25. 25

    如何在运行Bluhell防火墙附加组件的浏览器上将网站列入白名单?

  26. 26

    如何在discord.py中将用户列入黑名单和白名单?

  27. 27

    在Android上将OpenID列入白名单

  28. 28

    活动未列入白名单

  29. 29

    当我的ISP提供动态IP地址时,如何将我的IP地址列入白名单以满足公司的需求?

热门标签

归档