我正在构建一个基于php的网站,我想问一下将哪些文件放在用require语句检索的文件中,这样就无法通过浏览器访问用户。 (例如连接到我的数据库的php文件)
编辑实际上我认为更好的方法是将它们放在公共根目录之外,因为apache教程说htaccess会有减速影响。它可以通过添加../来完成 例如require(“../ myFile.php”); (至少这在我的服务器上有效) 最好的问候
答案 0 :(得分:1)
这取决于Web服务器配置。通常(或者至少在我目睹的所有情况下),您都有一个文档根目录,用户无法通过浏览器访问,其中包含所有公共材料的文件夹(通常称为 htdocs , httpdocs ,public_html或任何类型。通常,您可以将PHP包含文件放在该根目录中,然后使用require("../include_file.php");
来请求它们
但是,它取决于配置PHP是否可以包含公用文件夹之外的文件。如果没有, .htaccess 文件是您的最佳选择。
答案 1 :(得分:0)
用.htacces让它们安全!
Here's一个非常清晰的教程,用于使用密码保护文件。如果您不需要每个浏览器直接访问文件,或者只需要访问脚本,只需通过更改代码来完全阻止它们
<Files xy>
change this bit here
</Files>
到
Order allow,deny
Deny from all
然后你也不再需要你的htpassword文件了!
答案 2 :(得分:0)
如果您将这些文件放在网络服务器的文档根目录之外,则用户无法使用浏览器访问这些文件。
如果您使用apache,您还可以将这些文件放在不允许使用.htaccess文件访问的目录中。
最后一点,如果你的文件没有生成输出,用户就无法检查文件的内容。
答案 3 :(得分:0)
如果您的意思是源代码,那么它对用户是不可见的,如果您想要隐藏文件夹内容使用.htaccess指令选项 - 索引隐藏文件,如果您可以访问php源您的服务器配置是错误的并且它不解析php文件。
答案 4 :(得分:0)
您通常将它们放入无法通过Web服务器访问的目录中(文档或Web根目录之外)。有时称为“私人”目录。
然后,您可以在该路径中包含/要求该文件,因为PHP仍然可以访问这些文件。
另见:
答案 5 :(得分:0)
您需要将这些文件放在Web服务器上面向公众的文件夹之外。大多数(所有?)Web主机应该能够更改网站的文档根目录。
例如,假设您的所有文件均来自主机上的以下目录:/home/username/www/example.com/
这意味着互联网上可以看到驻留在该目录中的任何内容。如果您转到http://example.com/myfile.png
,则会在/home/username/www/example.com/myfile.png
处提供该文件。
您要做的是创建一个名为public
的新目录,该目录将为您的文件提供服务,并将文档指向那里。完成后,http://example.com/myfile.png
的请求将从/home/username/www/example.com/public/myfile.png
提供(请注意此处的public
目录)。现在,您网站上将无法显示位于example.com
目录中的任何其他内容。您可以创建一个名为private
的新目录,其中将存储敏感包含文件。
所以说你有两个文件:index.php
,它们为你的网站服务,sensitive.php
包含密码和那种性质的东西。你可以这样设置:
/home/username/www/example.com/public/index.php
/home/username/www/example.com/private/sensitive.php
index.php
文件在互联网上可见,但sensitive.php
不是。要包含sensitive.php
,只需包含完整的文件路径:
require_once("/home/username/www/example/com/private/sensitive.php");
您还可以将应用程序根目录(网站文件的根目录,但不是公共可访问文件的根目录)设置为define
,可能在某个配置文件中,并使用它,例如:< / p>
require_once(APP_ROOT . "sensitive.php");
如果您无法更改文档根目录,那么某些框架所做的是使用define
来注意该文件不应该直接执行。您可以在任何文件中创建一个定义作为应用程序的入口点,通常只是index.php
,如下所示:
if (!defined('SENSITIVE')) {
define('SENSITIVE', 'SENSITIVE');
}
然后,在任何敏感文件中,检查它是否已设置,如果没有则退出,因为这意味着文件正在直接执行,而不是由您的应用程序执行:
if (!defined('SENSITIVE')) {
die("This file cannot be accessed directly.");
}
此外,确保您的包含文件在公开可访问(实际上,即使没有)时,具有适当的扩展名,例如.php
,以便Web服务器知道将它们作为PHP文件执行,而不是将它们作为纯文本提供。有些人使用.inc
来表示包含文件,但如果服务器不能将它们识别为由PHP处理,那么任何关心外观的人都可以公开看到您的代码。这不好!为防止这种情况发生,请始终使用.php
扩展名命名您的文件。如果您想使用.inc
样式显示包含文件,请考虑改用.inc.php
。