在PHP中验证/绕过.htaccess .htpasswd

时间:2018-10-18 22:29:01

标签: php .htaccess .htpasswd

我在这里四处寻找与该主题相关的文章,但似乎没有任何效果。让我从解释我的情况开始。

我在.htpasswd / .htaccess保护的文件夹内有大量文件和文件夹(目录)。它们位于运行xamp apache的Windows Server上。

在此服务器上(和在此文件夹中),我有一个.php页面,该页面从文件夹和子文件夹中提取数据库记录和资产。这些资产是经过整理的,但遍布各地。

我有一个带有php文件的Linux服务器,并且我正尝试使用iframe理想地嵌入该单个php文件(因为它易于格式化)。问题是它仍然要求我提供登录到.htaccess网站的凭据。

我试图在受密码保护的目录上方创建一个php文件,以使用file_get_contents加载该php文件,但是仍然要求我输入密码。

我尝试将文件移出目录,但是由于所有资产都在目录中,因此它再次要求提供登录凭据...

起作用

我尝试编辑.htaccess以添加我的服务器IP,但是由于加载它的iframe是浏览器,因此无法使用。添加我的设备公共IP可以正常工作,这是一个很好的概念证明,因此我在想是否可以在服务器端加载内容?而不是呈现和加载浏览器端的iframe

或者,我错过了任何解决方法吗?

谢谢

更新1

如果我echo file_get_contents('local_file_path')我刚得到一个垃圾屏幕

$fixture) { # check if today $today = date("Y-m-d"); $fixturedate = $fixture['date']; if ($fixturedate == $today) { $this_fixture = ['title'=>$fixture['title'], 'hometeam'=>$fixture['hometeam'], 'homegoals'=>$fixture['hometeamgoals'], 'homecards'=>$fixture['hometeamcards'], 'awayteam'=>$fixture['awayteam'], 'awaygoals'=>$fixture['awayteamgoals'], 'awaycards'=>$fixture['awayteamcards'], 'progress'=>$fixture['progress']]; array_push($game_array, $this_fixture); } } } ?>
@ " . date("G:i") . ""; ?>
No fixtures today..."; } echo ''; include "../connection.php"; //Connect to Database # GET Logos $lsql = "SELECT `fixture_list`.*,`logos`.* FROM `fixture_list` JOIN 

如果我执行require 'local_file_path'会更好,但是没有文件路径匹配,因为它们在原始文档中都是相对的

1 个答案:

答案 0 :(得分:0)

我有一些想法可以尝试:

选项1

AuthUserFile /var/www/mysite/.htpasswd
AuthName "Please Log In"
AuthType Basic
require valid-user
Order allow,deny
Allow from 127.0.0.1
satisfy any

我从来没有亲自尝试过,所以您可能不得不使用服务器的出站IP(也许)。这个想法是允许从特定IP(本地主机)访问而无需登录。

选项2

您可以按路径(而不是网址)包含文件

  

如果我需要'local_file_path'更好,但是没有文件路径匹配,因为它们在原始文档中都是相对的

可以使用chdir()来设置PHP的工作目录。

http://php.net/manual/en/function.chdir.php

  

bool chdir (字符串 $ directory )   将PHP的当前目录更改为directory。

set_include_path()也可以是一个选项。

选项3

您可以使用cURL并登录,我发现的示例是通过命令行进行的,但也可以使用PHP的Curl进行工作。

$output = shell_exec('curl -A "Mozilla" -L "http://user:password@domain.com/api/someapi.php"');

这也可以通过将密码和用户添加到url中来与file_get_contents一起使用,但是它可能会记录在服务器访问日志中,这可能对您无关紧要。

始终最好通过路径访问您自己的服务器上的文件,这比执行网络请求要快得多。而且不那么明智的对数。

我确定还有其他一些技巧。