【问题标题】:How can prevent user from uploading php files with ftp?如何防止用户使用 ftp 上传 php 文件?
【发布时间】:2015-06-08 11:34:12
【问题描述】:

我在 Ubuntu 桌面上安装了 webmin,并使用 shell: /bin/rbash 创建了一个用户,以便用户可以使用 ftp 将文件上传到服务器。 现在我希望能够阻止用户将 php 文件上传到服务器。我试图创建一个 .htaccess 文件,并且测试了许多不同的 .htaccess 代码,但它不起作用...... 有人可以告诉我如何解决这个问题吗?

谢谢

【问题讨论】:

  • 定期运行脚本来删除文件。或者只是禁用目录中任何文件的执行。我暂时只能想到这些。
  • @frz3993 你好!好的,我明白了。你能给我一个提示,我应该如何/在哪里禁用任何 php 文件的执行?
  • 这取决于用户的访问类型。如果你想阻止你的web服务器(apache)运行它,可以在apache模块中配置(默认禁用)。如果您的用户具有 shell 访问权限,则阻止 php cli 执行会比较棘手
  • 如果您在 Webmin 中使用 ProFTPD,您可以使用 PathDenyFilter 描述的 here

标签: php .htaccess ftp


【解决方案1】:

我设法通过在proftpd.conf 文件中输入PathDenyFilter "(\\.php)$" 解决了我的问题。

【讨论】:

    【解决方案2】:

    对于直接问题的回答,可能有两种方法:

    1. 您希望用户只允许通过 FTP 提交/下载文件,那么您应该将 FTP 文件夹放在 webroot 之外。那么任何类型的脚本都无法执行。
    2. 您希望用户允许通过 FTP 提交文件并允许通过 Web 查看它们。 (听起来这是你目前的情况)。然后要禁用 PHP 执行,在 FTP 上传目录中插入 .htaccess 文件,代码如下
    <IfModule mod_php5.c>
    php_flag engine 0
    </IfModule>
    
    AddHandler cgi-script .php .phtml .php3 .pl .py .jsp .asp .htm .shtml .sh .cgi
    Options -ExecCGI
    

    我从 Wordfence WordPress 插件上传目录 htaccess 获取此代码,并假设您有 Apache,如果您提到 htaccess。或者你有nginx?你选择 Ubuntu 桌面,这台机器可以上网吗?

    恕我直言,我不建议允许用户允许在 webroot 中上传文件,因为他们可以上传任何内容而无需验证。只需 1 次恶意执行脚本即可为您的服务器创建危险的后门。取而代之的是,我建议 PHP 上传,您可以在其中检查它是否是真实图像(不是带有图像扩展名的 php 文件),检查大小等。

    如果您需要允许上传大文件(通过 FTP)并将它们显示为存在,请选择我的第一个选项,然后使用 PHP 扫描该目录并列出它们。你可以用RecursiveDirectoryIterator来做到这一点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 2011-03-05
      • 2016-03-31
      • 2018-02-13
      • 2011-05-19
      • 2018-02-20
      相关资源
      最近更新 更多