【问题标题】:What it mean when we perfix with dots for require function to indicate filename in php [duplicate]当我们在 php 中为 require 函数添加点以指示文件名时,这意味着什么 [重复]
【发布时间】:2018-02-12 06:53:12
【问题描述】:

我总是使用require('dbc.php');包含文件,但是当我在下面添加 2 个点 ../ 时有什么区别,是否有任何额外的安全性。

require('../dbc.php');
require('../lib/bootstrap.php');
require_once '../../../conf/config.php';

【问题讨论】:

  • 仅表示当前目录之外的一个目录。对于每一个../,您都会移出一个目录,这对于所有操作系统 windows 、Linux 和 Unix 系统来说都是非常基本的。

标签: php


【解决方案1】:

如果你这样做了

../../

你已经返回了两个目录

 ../

你已经返回一个目录

这基本上是你正在处理的文件所在的当前目录。这取决于 db 文件相对于需要它的文件的位置。它与安全无关。

【讨论】:

    【解决方案2】:

    .使您能够将包含文件的路径设置为相对于运行的原始文件(包含它们的文件)的路径。 ./ 表示当前目录。因此,如果包含这样的文件:

    require('./config.php')
    

    您告诉 PHP 在当前目录中查找“config.php”。和那个是一样的

    require('config.php')
    

    ../表示上面的目录或“父目录”

    require('../dbc.php');
    

    这是告诉 PHP 上一个目录并查找“dbc.php”。

    这些命令可以这样链接:

    require('../lib/bootstrap.php');
    require_once '../../../conf/config.php';
    

    【讨论】:

      【解决方案3】:

      这些点只是用来遍历目录结构。 What is double dot(..) and single dot(.) in Linux?,尽管您应该避免使用相对路径并使用绝对路径。 Absolute vs. relative paths.

      安全性: 就其本身而言,它不会带来任何安全优势,除非您弄错了,否则您的应用将根本无法运行!

      如果 PHP 解析失败,它确实增加了一些防止代码泄露的保护。这仅适用于您将主代码存储在 webroot 之外的情况,尽管我从未遇到或看到这个问题自发发生,尽管它可能会发生。 Storing script files outside web root.

      【讨论】:

        猜你喜欢
        • 2012-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-31
        • 2013-01-21
        • 2018-01-19
        • 1970-01-01
        相关资源
        最近更新 更多