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

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

WBOY
リリース: 2016-06-21 09:11:18
オリジナル
1191 人が閲覧しました

暗号化|ページ

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 ページであり、ウィンドウに貼り付けて、ホームページの残りの部分に合わせてスタイルを設定できます。タイマー機能が含まれています - パスワードが正しいことを示すメッセージを表示しながら、訪問者を安全なページにリダイレクトするまで一定時間待機します。同様の一連の関数を含めて、最初のページをリロードすることもできます。

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



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート