-2

我正在编写 Intranet 应用程序,但服务器也用作工作站。我想知道是否有办法限制对 WWW 文件夹的访问,以便对使用这些应用程序的人隐藏服务器代码(在本例中为 PHP)。

有了这个,我还将保护写在 WWW 文件夹内的脚本中的数据库密码。

我已经四处寻找了一段时间,但我无法找到任何关于此的内容。

我和我的一个恶魔谈过,他告诉我,如果我使用 windows,我可以在 windows 中创建一个用户,并使该文件夹只能由该帐户访问,并授予 Apache 访问它的权限,在这种情况下,我们可以从任何其他用户帐户,但将无法访问这些文件。

我担心有人使用任何 linux 发行版的 live CD 来获取文件的可能性,他告诉我,如果我安装 grub 并锁定它,就不可能为此使用 live cd,除非这样做的人有grub 键。

当然,在 linux 中也是可以的。谁能解释一下这个过程?还有什么建议吗?

4

3 回答 3

0

所有与网络无关的资产(例如不是 html 文件、css、javascript 等)都应该放在文档根目录之外。这样就无法通过浏览器访问它们。

于 2013-01-29T20:09:32.290 回答
0

这在 Linux 上很容易做到。比如说,您有网站所有者的用户名为john,而您在系统上有另一个用户名为bob. 您不想bob看到john的文件,但希望 Apache 可以访问它们。Apache 默认作为单独的用户(通常是apachewww-data)运行,并且是johnbob组的成员。

保存文件的目录应该没有“其他”的权限,至少有“组”的读取和执行权限,并且可能对用户具有完全访问权限。

drwxr-x--- 35 john john 4096 Jan 29 15:47 /path/to/john/webroot/

您可以通过执行以下操作来做到这一点:

chmod 750 /path/to/john/webroot/

为了被 Apache 访问,这些文件只需要读取权限。然后您可以对它们进行 chmod 640:

chmod 640 /path/to/john/webroot/super_sensitive_config_file.php

然后应该向您显示如下内容:

$ ls -l super_sensitive_config_file.php
-rw-r----- 1 john john 385 Jan 19 16:27 super_sensitive_config_file.php

然后,bob用户应该会看到如下内容:

bob@server:~$ cat /path/to/john/webroot/super_sensitive_config_file.php
cat: /path/to/john/webroot/super_sensitive_config_file.php: Permission denied
于 2013-01-29T21:14:38.427 回答
0

完全阻止对文件的访问可能是不可能的,因为计算机的所有者(您的客户端)可能具有管理员权限,因此始终能够覆盖您对文件/文件夹施加的任何限制。

这给你留下了一些其他的选择

  1. 不要安装在客户的计算机上,而是出售一个“完整”的软件包,包括一个只有你可以管理的小型服务器

  2. 在安装在客户端计算机上的虚拟机上运行网站(例如 VMWare、Parallels Desktop 或类似的东西)。只有您可以完全访问虚拟机,因此与选项 1 相同

  3. '混淆' PHP 源代码。有一些选项(搜索 PHP 混淆),但我建议选项 1 或 2

当然,您始终可以将网站作为“托管”服务提供,在外部 Web 服务器上运行,但如果包含重要信息和私人信息,则必须具备所有正确的安全性。

于 2013-01-29T21:15:54.950 回答