Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
人们可以将.php文件写入我的chmod 777文件夹吗_Php_Security - Fatal编程技术网

人们可以将.php文件写入我的chmod 777文件夹吗

人们可以将.php文件写入我的chmod 777文件夹吗,php,security,Php,Security,黑客(或其他人)是否有可能将php文件上传/写入我的网站上有chmod 777的文件夹 例如: 我有一个包含chmod 777的文件夹。 该文件夹包含图像。 我使用.htaccess阻止对文件夹编制索引 问题: 人们可以在自己的网站上使用php脚本将.php文件写入包含chmod 777的我的文件夹吗?例如,列出该文件夹中的所有图像 (我熟悉上传文件夹等的正确chmod…,只是假设性地问一下)如果您的代码位于共享服务器或具有其他服务的服务器上,则其他本地用户可以写入您的目录(如果其他用户能够进入

黑客(或其他人)是否有可能将php文件上传/写入我的网站上有chmod 777的文件夹

例如:

我有一个包含chmod 777的文件夹。 该文件夹包含图像。 我使用.htaccess阻止对文件夹编制索引

问题: 人们可以在自己的网站上使用php脚本将.php文件写入包含chmod 777的我的文件夹吗?例如,列出该文件夹中的所有图像


(我熟悉上传文件夹等的正确chmod…,只是假设性地问一下)

如果您的代码位于共享服务器或具有其他服务的服务器上,则其他本地用户可以写入您的目录(如果其他用户能够进入父目录)

你需要的不仅仅是一个每个人都可读写的目录(777)才能被黑客攻击。使用权限777通常表示对安全功能的理解很差(或者代码需要重新分发时是懒惰的,作者不想通过向脚本用户解释文件权限而使其变得太困难)。

有(至少)三种方法可以写入您的目录:

  • 如果他们对服务器具有本地控制(例如通过终端)
  • 如果您的Web服务器支持并允许
    PUT
    HTTP方法
  • 如果你有一个脚本,允许人们上传文件到该目录
只要您不以可写的方式公开该文件夹,就没有人可以远程修改该文件夹的内容。这与本地权限无关。您设置的本地权限允许服务器的任何本地用户在此文件夹中读取、写入和执行,但这并不意味着远程攻击者可以


话虽如此,除非绝对必要/安全,否则应避免使用
777
权限。

该机器的任何合法用户都有可能将
.php
文件或任何他们想要的东西写入该广泛打开的目录。
777
目录在共享主机上几乎没有位置。(
/tmp
有时可能是
1777
,用于设置目录上的粘性位——这只允许文件所有者删除目录中的文件。通常,
777
意味着任何人都可以从目录中删除任何文件。但是
/tmp
在共享托管环境中肯定不受欢迎,因为它位于其他目录中(非常不安全。)

那么:您是机器上唯一的用户吗?或者这台机器是与其他人共享的?除了web服务器,这台机器还运行其他服务吗?如果是这样,其他服务也可能代表一个可能的攻击向量。 此外,如果您的目录上的权限设置为
777
,我想知道您运行的PHP文件有多安全——我见过很多人运行不安全的PHP脚本,攻击者可以修改整个web服务器上的每个HTML文件,感染浏览网站的人。(是的,很多。比一把多得多。)

这就是为什么web服务器运行的任何用户帐户都不应该拥有网站的任何文件——静态页面和动态页面。web服务器应该只有足够的写入权限来写入其
access.log
error.log
,并与数据库服务器进行对话。任何漏洞都很容易使脚本中的一个良性缺陷成为可利用的漏洞,从而使您的站点被用于攻击其他站点

777
是个坏主意。解决这个问题。确保您的web服务器没有对任何web内容的写入权限。确保服务器上没有其他服务对您的web内容具有写入权限。确保服务器上没有其他用户对您的web内容具有写入权限

更新

这比听起来容易。创建新的
webcontent
用户。如果您的web服务器已经有了自己的组,那么让我们使用它并将其称为
webgroup
。如果还没有,还可以创建一个新的
webgroup
。(
adduser(8)
addgroup(8)
如果VPS没有自己的机制。)然后设置所有web内容的所有者:

chown -R webcontent:webgroup /path/to/web/content
修复权限:

find /path/to/web/content -type d -print0 | xargs -0 chmod 750
find /path/to/web/content -type f -print0 | xargs -0 chmod 640
然后确保您的web服务器正在使用该指令,以确保它仍然可以读取所需的所有文件


这将使您的web服务器具有对所有脚本和配置的读取权限,但如果web服务器本身被黑客攻击,则无法修改任何脚本和配置。

假设我在VPS上。所以我是(虚拟)机上的唯一用户。web服务器是VPS上的唯一服务吗?你对你的脚本有多信任?我是否正确地认为执行你的最后一段并不像听起来那么容易?通过说“确保你的Web服务器没有写权限”,你的意思是确保只有PHP服务有写权限?如果你指的是PHP、ftp、mysql等Web服务器;对我很信任我的剧本。上传只能由登录人员完成。在批准前进行识别和检查。Ahaaa,不知道“修订工具”thx!:)我不完全明白这一点:“只要你不以可写的方式公开该文件夹,就没有人可以远程修改该文件夹的内容”