【问题标题】:PHP: Is permission 777 a security issue?PHP:权限 777 是安全问题吗?
【发布时间】:2016-05-22 14:41:45
【问题描述】:

我正在尝试使用 html/php 表单上传文件。 而且我不断收到此错误:

PHP 警告:move_uploaded_file(/var/www/html/envioDoc/archivosAlumnos/archivo-dni-):无法打开流:/var/www/html/envioDoc/avisos-de-pago.php 中的权限被拒绝第 45 行,引用者:http://54.85.84.42/envioDoc/index.html

我的 php 文件中的第 45 行是 move_uploaded_file() 函数。

所以,我已经在服务器上的命令行中完成了这个:

ps aux | grep httpd

结果的第一列是我登录的用户名:ubuntu

然后:

sudo chown ubuntu /var/www/html/envioDoc/archivosAlumnos

chmod -R 0755 /var/www/html/envioDoc/archivosAlumnos

但是错误一直出现,所以我把烫发改成了0777。

这不安全吗?为什么它不适用于 0755?

【问题讨论】:

  • 是的,777 是一个安全问题。潜在的问题可能是由于文件的权限。尝试将文件的权限更改为 644 或 777,并将文件夹更改回 755。
  • 在您尝试写入的文件夹上设置了哪些用户/组/权限?执行ls -l /var/www/html/envioDoc/archivosAlumnos/(假设这是您的目标文件夹)。下午好@Fred-ii-!
  • 下午 @halfer - 这里仍然是“早晨”,但我们正在慢慢到达那里 ;-) 喜欢这个阳光明媚的日子! 干杯,现在要出去享受这美丽的阳光了。
  • 服务器运行的用户/组非常相关。而当前使用 FPM/suexec 的设置将使这无关紧要。真正的安全问题是保持临时/上传的文件可通过网络访问,顺便说一句。

标签: php permissions


【解决方案1】:

我相信你需要设置权限0777,因为php需要写文件的能力,因为php经常在自己的用户下运行自己的进程,它将无法写文件。权限 0777 仅表示您希望允许所有进程能够读写和执行文件,而 0755 仅允许所有者读写和执行文件,而其他用户(例如 php)只能读取和执行。

现在关于安全性:

因为这里唯一真正的改变是授予 php 写权限。现在这本身并不是一个安全问题,只要您正在清理您允许上传的文件。但从技术上讲,它确实为您打开了更多攻击媒介,例如恶意文件上传,您确实没有其他方法可以允许文件上传,这完全取决于您如何处理文件,例如将某些扩展名列入黑名单并确保文件大小限制以确保您的服务器安全。

附注:

您可能还想删除该文件夹的执行权限,因为您不应该将正在运行的任何 php 文件存储在您希望上传文件的同一目录中,这是您不应该的。你的文件上传目录应该只有读写权限,不需要执行权限,运行下面的命令

chmod go+rw file

相当于:

chmod -R 0666 /Mohammad/is/cool

这将使组和其他人可以读写文件。你可以阅读更多关于herehere的信息

【讨论】:

  • @halfer 这样更好吗?
  • 0755 表示所有者(不是root)可以读、写和执行。前 5 个用于组(所有者所在的组),这意味着同一组中的用户可以读取和执行。第二个 5 是给其他人的,意思是一样的。
  • @CharlotteDunois 是的,你说得对,我总是把所有者和 root 搞混,我现在就编辑掉 root 并输入所有者
猜你喜欢
  • 1970-01-01
  • 2012-04-02
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
  • 2021-12-16
  • 1970-01-01
  • 2011-07-28
相关资源
最近更新 更多