English 中文(简体)
避免文件树中要求检索的档案
原标题:folder to save files that are retrieved with require in document tree

I m building a website based on php and i want to ask where to put files that are retrieved with a require statement, so that they can not be accessed from users with their browser. (for example a php file that connects to my database)

EDIT actually i think the better way is to put them outside the public root because apache tutorial says htaccess will have a slowdown impact. it can be done with adding a ../ for example require("../myFile.php"); (At least this works in my server) Best regards to all

问题回答

That depends on the web server configuration. Usually (or at least in all cases I witnessed), you have a document root which cannot be accessed by users with their browser, with in there a folder containing all public material (often called htdocs, httpdocs, public_html or anything of the kind. Often, you can place your PHP include files in that root, and then require them using require("../include_file.php"); However, it depends on the configuration whether PHP can include files outside your public folder. If not, a .htaccess file is your best option.

如果你将这些档案置于网站服务器用户的文件根基之外,就不能用浏览器查阅这些档案。

如果你使用沥青,你也可以将这些档案存放在你不允许查阅的目录中。

最后一点是,如果你的档案不会产生产出,那么用户就无法检查档案的内容。

如果你指向源代码,那么如果你想要藏匿文件夹的内容,则用户便无法看到,如果你能够查阅网站(www.htaccess Directive Options-Indexes)来隐瞒档案,那么你就错了服务器配置,而且没有把网站存档。

通常,你们会把他们放在一个名录上,在网络服务器上(在文件或网络根基之外)无法查阅。 有时称为“私人”名录。

然后,你将档案从这条道路上删除,因为PHP仍然能够查阅档案。

See also:

让他们放心!

这里的是保护带有密码的档案的非常明确的指导。 如果你不需要直接查阅每个浏览器的档案,或者只有你的文字需要查阅,那么,仅仅通过在法典之间修改法典而阻止这些文件的填写。

<Files xy>
change this bit here
</Files>

to

  Order allow,deny
  Deny from all

那么,你们赢得的门口,就更不用说。

你们需要将这些档案放在公共文件夹之外,放在你的网络服务器上。 大部分(所有?)网络主办人应当有能力改变网站的文件根基。

例如,请指出,贵国的所有档案都由以下东道名录提供:/home/username/www/example.com/

这意味着,该名录内的任何东西都可以在互联网上看到。 如果你去<代码>http://example.com/myfile.png,则该编码可在<代码>/home/username/www/example.com/myfile.png上查阅。

你们想要做的是建立一个新的名录,例如public<>/code>,该名录将服务于你的档案,并将文件放在其中。 您提出以下要求:<代码>http://example.com/myfile.png 。 页: 1 现在,在<代码>example.com的目录内居住的任何东西都可以在你的网站上看到。 您可以创建新的名录,例如 私人<>/code>,其中你的敏感内容将包括档案。

因此,你有两个文件:index.php, 供您网站使用,灵敏度:php, 其中载有密码和此类内容。 您将设立这样的机构:

/home/username/www/example.com/public/index.php
/home/username/www/example.com/private/sensitive.php

<代码>index.php file isprofile to the Internet, but tive.php is not. 包括<密码>敏感度.php,你仅包括完整的档案途径:

require_once("/home/username/www/example/com/private/sensitive.php");

您也可将申请根基(贵国网站档案的基础,虽然不是公开查阅的档案的根源)作为<代码>define,可能的话,放在某个地方的汇辑中,并使用这一根基,例如:

require_once(APP_ROOT . "sensitive.php");

If you can t change the document root, then what some frameworks do is use a define to note that the file shouldn t be executed directly. You create a define in any file you want as an entry point to your application, usually just index.php, like so:

if (!defined( SENSITIVE )) {
   define( SENSITIVE ,  SENSITIVE );
}

然后,在任何敏感的档案中,你检查了该档案的定点,如果其仓储,则予以撤销,因为这意味着档案正在直接执行,而不是通过你的申请:

if (!defined( SENSITIVE )) {
   die("This file cannot be accessed directly.");
}

此外,确保你在公开查阅时(实际上,即使不是的话)列入档案,并适当推广,例如<代码>.php,以便网络服务器知道将其作为PHP文档执行,而不是作为便捷文本。 有些人使用<代码>.inc,表示包括档案,但如果服务器不承认这些档案是用购买力平价处理,则你的代码将公开向任何关心的人开放。 这不好! 为了防止这种情况,总是把你的档案称为.php的延伸。 如果您希望使用<代码>.inc.inc.php。





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签