簡體   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