繁体   English   中英

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

[英]authenticate / bypass .htaccess .htpasswd in PHP

我已经仔细查看了与此相关的文章,但我看到的似乎没有任何效果。 让我先解释一下我的情况。

我在 .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

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

您可以按路径(而不是 url)包含文件,

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

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

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

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

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

选项3

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

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

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

通过路径访问您自己服务器上的文件总是更可取,它比执行网络请求要快得多。 并且不太明显对数。

我敢肯定还有其他一些技巧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM