ホームページ php教程 php手册 PHP はテキスト ファイルを暗号化し、特定のページへのアクセスを制限します

PHP はテキスト ファイルを暗号化し、特定のページへのアクセスを制限します

Jun 21, 2016 am 09:11 AM
header php submit

暗号化|ページ

1. はじめに

一般に、Web サイトはデータベースをまったく使用する必要がないほどシンプルですが、場合によっては、サイトで特定のページへのアクセスを制限したい場合があります。通常、これはデータベースを使用してパスワードとユーザー名を保存することを意味します。ただし、より簡単な方法があります。安全性は少し劣るものの、最小限のコーディングで済みます。

Web アプリケーションでデータベースを使用している場合は、パスワードとユーザー名をどこかに保存する機能と、訪問者を認証する方法がすでに用意されています。しかし、サイトのセキュリティや複雑さのためにデータベースの使用が保証されない場合はどうなるのでしょうか?特定の人だけがサイトの特定のページまたは領域にアクセスできるようにしたい場合があります。これを行う非常に簡単な方法は、パスワードを保存するテキスト ファイルを使用し、訪問者にパスワードの入力を求めるページを作成することです。パスワードがテキスト ファイルに保存されているものと一致する場合、ユーザーはアクセスを許可されます。それ以外の場合は、ページの更新を開始する前に、アクセスを無効にするための適切なメッセージを表示します。

セキュリティをさらに強化するために、ハッシュを使用してテキスト ファイルに保存されたパスワードを暗号化することもできます。これにより、その内容が何らかの方法で発見された場合でも、発見することが困難になります。これらはすべて PHP メソッドを使用して構築でき、最小限のコーディングが必要です。

正式に開始する前に、PHP をテストして使用するための環境をセットアップする必要があるため、最初に PHP 用の Web サーバーをインストールして設定する必要があります。 Apache は PHP とうまく連携し、インストールと設定が簡単なので、このオプションをお勧めします。

次に、ページ (下の画像と同様) を作成する必要があります。このページには、訪問者からパスワードを受け取るためのテキスト ボックスと、パスワードを PHP ファイルに送信するための送信ボタンがあります。これは、サイト上の新しいページまたは既存のページの一部のいずれかです。次のような単純なコード ブロックで十分です。


Password:


</p>
>

次に、PHP ホームページを作成します

次に、実際に動作する PHP を作成する必要がありますホームページ。テキストエディタで空白のページを開き、標準的な方法で PHP ブロックを開きます:

<?
前に述べたように、PHP にはファイル操作を実装するための標準的な関数とメソッドのセットがあります。その中で最も重要なものは、fopen()、fread()、および fclose() 関数です。ある種のファイル操作を実行するには、まずファイルを開く必要があります。これは明らかに fopen() 関数を使用して行われます。さらに、ファイルの読み取り方法を指定する必要があります。ファイルの読み取りが最も一般的です。ファイル ポインタをファイルの先頭に置くか末尾に置くか、ファイルがまだ存在しない場合は作成するかどうかをプログラムに指示するために使用できる追加フラグは他にもあります。ただし、この場合は、パスワードを含むテキスト ファイルを開いて読み取るだけで済みます。

次に、まず指定したテキスト ファイル パスに変数を作成します:

$fileloc = "/apachesite/docs/pass.txt"

次に、ファイル ポインタを格納する変数を作成します:

$filetoread = fopen( $fileloc, "r") または die("パスワード ファイルを開けませんでした");

何らかの理由で操作が失敗した場合は、die メソッドを使用してスクリプトを終了し、適切なメッセージを画面に出力することもできます。ファイルを開いたら、その内容を読み取り、パスワードの形式で入力された内容と比較する必要があります:

$storedpass = fread($filetoread, filesize($fileloc)) または die ("できませんでした)保存されたパスワードを読み取る");

データをファイルに保存する変数を設定し、fread() メソッドを呼び出す必要があります (ファイル ポインターとファイル長の 2 つのパラメーターがあります)。パスワードの長さを知っている場合もあれば、知らない場合もあります。将来のプログラミングを容易にするために (パスワードを変更する必要がある場合)、filesize() メソッドを使用してファイルの長さを取得できます。ファイルが不要になったら、すぐに閉じます:

fclose($filetoread); POST メソッドを使用してユーザー入力を PHP スクリプトに送信する場合、$_POST を使用して入力パスワードを取得できます:
$password = $_POST["password"]; その後、単純に入力を入力します。パスワードを保存されているパスワードと置き換えて、適切なアクションを実行します:

if (empty ($password)){
die ("パスワードが入力されていません");
}
elseif ($password != $storedpass){
die ("パスワードが正しくありません" ");
}
else{
Header("場所: securepage.htm")
}
?>
最初の if ステートメントは、空の $password 変数を処理して、入力ボックスが空のときに送信ボタンがクリックされないようにします。ユーザーが入力したパスワードが保存されているパスワードと一致しない場合、2 番目のステートメントは括弧内のコードを実行し、パスワードが間違っていることを示すメッセージを出力します。最後に、最初の 2 つの条件のどちらも満たされない場合、スクリプトはパスワードが正しい必要があると想定し、サンプル HTML ページを開くためにブラウザにリダイレクト ヘッダーを送信します。

これが機能する前に、テキスト ファイルを作成し、PHP ファイルと同じディレクトリに置く必要があります。これには、現在使用したいパスワードをプレーン テキスト形式で保存する必要があり、PHP ファイル名を参照する必要があります。これらのファイルをすべて保存し、ブラウザで HTML ページを開いてフォームを試してください。ページは想定どおりに機能するはずです。

正しいパスワードを入力すると、次のようなエラー メッセージが表示される場合:

「警告: ヘッダー情報を変更できません - ヘッダーは (thepathtoyourphpfile) によって既に送信されています」
つまり、出力バッファリングをWindows ディレクトリ内の php.ini ファイルが「on」に設定されています。


IV.暗号化

さて、先ほど述べた暗号化の問題の分析を始めます。 PHP にはいくつかの組み込み MD5 メソッドがあります。このように、これらの関数を使用して、保存されているパスワードと比較する前に、訪問者が入力したパスワードを簡単に変換できます。

MD5は一方向のハッシュアルゴリズムであり、パスワードは通常のテキストから暗号化されたテキストへの一方向のみに暗号化できますが、逆方向には暗号化できないことを意味します。ただし、これで壊れなくなるわけではありません。この暗号化はブルート フォース攻撃や辞書攻撃によって簡単に破られますが、それでも比較的安全です。 $password 変数の宣言の後に次の行を追加できます:

$md5password = (md5($password));
これにより、テキスト ボックスに入力されたコンテンツの暗号化されたバージョンが変数 $md5password に保存されます。次に、保存されたパスワードと新しい暗号化されたパスワードを比較するように if ステートメントを変更する必要があります。

if (empty ($password))
{
die ("パスワードが入力されていません");
}
elseif ($ md5password != $storedpass)
{
die ("Password Incorrect");
}
else
{
header("Location: securepage.htm");
}
ご覧のとおり、elseif 内の変数のみを変更しています。声明の一部。これは、空の入力変数であっても 32 ビット値にハッシュされるため、入力フィールドにテキストが入力される前に送信ボタンがクリックされたとしても、$md5variable が空になることはありません。

あとは、テキスト ファイル pass.txt に保存したいパスワードのハッシュを見つけるだけです。これを行うには、if ステートメント全体をコメント アウトし、暗号化されたパスワードを画面に表示するための echo ステートメントを追加します。その後、暗号化された文字列をコピーしてパスワード ファイルに保存できます。ただし、スクリプトを使用する前に、if ステートメントのコメントを解除し、エコー呼び出しを削除することを忘れないでください。


この記事で説明する方法に関する限り、上記のスクリプト フレームワークが提供するもので十分です。さらに、この記事で説明するテスト ファイルは、非常に基本的なものですが、既存のページに簡単に追加できる HTML ページであり、ウィンドウに貼り付けて、ホームページの残りの部分に合わせてスタイルを設定できます。タイマー機能が含まれています - パスワードが正しいことを示すメッセージを表示しながら、訪問者を安全なページにリダイレクトするまで一定時間待機します。同様の一連の関数を含めて、最初のページをリロードすることもできます。

つまり、この記事で提供されているスクリプトを使用して、サイト構造内の特定のページへのアクセスを制限できます。この方法では、データベースが提供する安全なユーザー名/パスワード認証方法は提供されず、安全なページにアクセスしたい人にはパスワードを送信する必要がありますが、シンプルなレイヤーを提供するために必要な時間とコーディングはほとんどかかりません。セキュリティの。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

See all articles