PHP访问文档根上的文件是否安全?

PHP访问文档根上的文件是否安全?,php,security,mysqli,Php,Security,Mysqli,我见过很多这样的问题,但我遇到了一些看起来很简单的问题,我想知道它是否安全 据我所知,我的文档根目录是我的主机(rochen)上名为public\uHTML的文件夹。我期待着实现一个数据库的第一次,需要确保用户和密码等从我所读到的,这些信息需要在文档根以外 一个非常简单的例子是在与public\u html相同的级别创建一个ini文件,并在我的PHP中使用这一行来访问它(假设我的PHP文件就在public\u html的正下方): 我从DOS知道的点-点是老的“上一级”技巧 然后,数据库将使用i

我见过很多这样的问题,但我遇到了一些看起来很简单的问题,我想知道它是否安全

据我所知,我的文档根目录是我的主机(rochen)上名为
public\uHTML
的文件夹。我期待着实现一个数据库的第一次,需要确保用户和密码等从我所读到的,这些信息需要在文档根以外

一个非常简单的例子是在与
public\u html
相同的级别创建一个ini文件,并在我的PHP中使用这一行来访问它(假设我的PHP文件就在
public\u html
的正下方):

我从DOS知道的点-点是老的“上一级”技巧

然后,数据库将使用ini文件内容,如下所示:

$connection = mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']);
我的带有敏感信息的ini文件位于文档根目录之上,根据我所阅读的内容,它是安全的。与我读过的许多其他答案相比,这似乎是一种更简单的实现结果的方法。这是正确的还是我缺少了一些巨大的安全漏洞?

很好。
造成问题的是包含“.”的动态文件名,例如,
是否包含“.”

一个非常简单的例子是创建一个与public_html相同级别的ini文件,并在我的PHP中使用这一行来访问它(假设我的PHP文件直接位于
public_html

这种想法本身并不能保证任何东西

如果您的任何脚本需要读取该文件,则该文件可能存在风险。因此,关键不在于提出复杂的文件系统方案来存储配置文件,而在于理解如何通过几个简单的步骤有效地阻止对文件的访问

例如,这是您的配置文件:

$config = parse_ini_file('../config.ini');
你在PHP中,担心窥探者的眼睛,对吗?如果这是一个自定义PHP代码库,您可以随意命名该文件,然后将其设置为
.ini.PHP
文件,如下所示:

$config = parse_ini_file('../lembasts_config.ini.php');
最关键的想法是,大多数黑客企图来自恶意机器人试图访问通常命名的文件。因此,
config.ini
是一些脚本小子已经编写好要寻找的东西。他们不知道什么是
lembersts\u config.ini
,更不用说
lembersts\u config.ini.php
了。因此,使配置名称与您的需求相适应将有助于“隐藏”您的配置

那么
lembarts_config.ini.php
.php
版本到底是为了什么?其名称为PHP,因此您可以在文件本身中执行类似的操作:

;<?php
;die();
;/*

username="[your username]"
password="[your password]"
dbname="[your dbname]"

;*/

;?>
其思想是,
parse_ini_file
将按预期解析ini值。但是由于
.php
扩展,
die(),则代码>将运行


web安全的关键很简单:绝大多数入侵都来自寻找常见漏洞的自动化脚本。用这样的简单技术堵塞常见漏洞,使您的代码库更加安全。

这个想法是,如果有人可以访问您的web根目录上方的文件夹,他们就可以读取
。/config.ini
文件。谢谢-我对php非常陌生,但这是一个很好的技巧-将ini值放入php脚本文件中!我想如果我的文件名为kisjdn876wr8fkijnrfi.php会更好?@lembarts谢谢!你还需要意识到99%的在线黑客不是目标。它们基本上是由脚本机器人进行的“推入式”尝试。所以你不应该认为“他们都是来抓我的!”因为我向你保证“他们”根本不在乎你。“他们”关心的只是找到一个薄弱的服务器进行攻击。做一些像这样的基础工作&你已经比绝大多数网站的安全性更好了。@lembarts“我想如果我的文件名为
kisjdn876wr8fkijnrfi.php
,会更好吗?”是和否。是的,脚本不知道该找什么。但是,从现在起几个月或几年后,当您重新访问代码时,您还记得什么是
kisjdn876wr8fkijnrfi.php
;<?php
;die();
;/*

username="[your username]"
password="[your password]"
dbname="[your dbname]"

;*/

;?>