例如,使用CodeIgniter,而不是真正处理.php文件。目录结构中的任何.php文件都是可读的吗?如果不是为什么不呢?为什么我不能在CI目录中浏览config.php?它只是unix文件权限吗?
谢谢。
答案 0 :(得分:1)
我是从'浏览器'的角度来看这个。如果你想查看目录的立场,请查看zombat的答案。
在CodeIgniter中,他们可能会设置一个.htaccess
文件,将所有请求定向到一个脚本,这样他们就可以用一个脚本而不是二十几个脚本来处理它。
因为PHP是一种“服务器端”编程语言,所以文件中的所有信息都不会被发送到客户端。这允许你使用任何方法来生成你想要的HTML页面,因为客户端永远不会看到代码。这兼作安全设备。
在大多数PHP情况下,开发人员将库和类构建到Document_Root(网站启动的位置)上方的文件夹中,然后简单地放入运行这些类的文件。这使他们可以绝对确定一个人没有机会找到他们的文档结构,并使用该信息下载可以为他们提供有关如何破解系统的信息的文件。
此方法还允许人们不关心服务器运行的语言。所有网页都是用HTML创建的,因此所有需要生成的服务器都是HTML文件。他们是否使用Perl,Python,PHP或其他语言完全取决于开发人员。
答案 1 :(得分:1)
通常,像config.php
这样的文件没有任何输出。因此,浏览器可以访问它们,但用户不会看到任何内容。
用户永远不会看到.php
文件的源代码,如果您担心的话。您的Web服务器将通过PHP处理器传递所有.php
个文件;只有.php
文件生成的输出才会发送给用户。
如果config.php
与其他.php
文件位于同一目录中(通常是),那么就没有Unix文件权限或.htaccess
内容。它只是一个不产生输出的文件。
答案 2 :(得分:1)
要回答有关为何无法在CodeIgniter中浏览config.php的问题,这不是因为Unix权限,也不是保护它的.htaccess文件。
所有CodeIgniter PHP文件在文件顶部都有一行,用于检查常量“BASEPATH”。该常量仅在您通过框架时设置,因此当您尝试访问文件而不通过框架时,将不会设置“BASEPATH”并且脚本将退出。
这是CodeIgniter保护文件的可移植方式,因为不是每个人都使用Apache(.htaccess文件)。
答案 3 :(得分:0)
linux / unix系统上的PHP文件遵循与其他所有文件相同的文件权限规则。如果您无法浏览到config.php
文件,则是,您登录的用户没有相应的文件权限。
通常,您希望设置对PHP项目的权限,以便运行Web服务器的uid具有在Web结构中读取和执行文件的适当权限。
对于我自己,我通常在我的LAMP系统上设置一个webdev
组,并将apache
用户放入该组。我在PHP文件结构上正确设置了所有组权限,以便Apache可以执行它需要做的事情。这样,用户可以拥有自己的所有Web文件,并且webdev组可用于控制对结构的任何其他访问。这减轻了有人进入并读取配置文件以获取数据库密码的多用户系统的担忧。