ホームページ php教程 php手册 Apacheサーバーのユーザー認証(移管)

Apacheサーバーのユーザー認証(移管)

Jun 21, 2016 am 09:14 AM
apache mysql php quot

apache|サーバー

インターネットを頻繁にサーフィンする読者は、このような状況に遭遇することがあります。一部の Web サイト上の特定のリソースにアクセスすると、リソースにアクセスするためのユーザー名とパスワードを求めるダイアログ ボックスがブラウザーに表示されます。ユーザー認証を行う技術です。ユーザー認証は、ネットワーク システム リソースを保護するための最初の防御線であり、すべてのログインを制御し、アクセス ユーザーの正当性をチェックします。その目的は、正当な権限を持つ正当なユーザーのみがネットワーク システム リソースにアクセスできるようにすることです。基本的なユーザー認証技術は「ユーザー名+パスワード」です。


Apache は現在、Linux、Unix、Windows およびその他のオペレーティング システムで実行できる人気の Web サーバーであり、「ユーザー名 + パスワード」認証の問題を十分に解決できます。 Apache ユーザー認証に必要なユーザー名とパスワードは 2 つの異なる方法で保存されます。1 つはテキスト ファイルで、もう 1 つは MSQL、Oracle、MySQL などのデータベースです。 LinuxのApacheを例に、これら2つのストレージ方式それぞれのユーザー認証機能の実装方法を紹介するとともに、WindowsのApacheユーザー認証についても簡単に説明します。

テキスト ファイル ストレージを使用する

この認証方法の基本的な考え方は、Apache が認証機能を開始した後、アクセスを制限する必要があるディレクトリに .htaccess という名前のファイルを作成し、認証設定コマンドを指定することができます。 。ユーザーがこのディレクトリ内のファイルに初めてアクセスすると、ブラウザーはユーザーの身元を確認するためにユーザー名とパスワードの入力を求めるダイアログ ボックスを表示します。正規のユーザーの場合は、アクセスしたページのコンテンツが表示されます。その後、アクセスしたディレクトリ内のすべてのページに対して、ブラウザーがユーザー名とパスワードを自動的に送信するため、再入力する必要はありません。ブラウザが閉じられています。実装の具体的な手順は次のとおりです:

Apache 1.3.12 がコンパイルされ、/usr/local/apache ディレクトリにインストールされていると仮定して、スーパー ユーザー root として Linux に入ります。デフォルトでは、Apache のコンパイル時に mod_auth モジュールが自動的に追加されます。このモジュールを使用すると、テキスト ファイルを保存方法として使用する「ユーザー名 + パスワード」認証機能を実装できます。

1. Apacheの設定ファイル/usr/local/apache/conf/httpd.confを変更し、認証リソースが配置されているディレクトリの設定コマンドを設定します。次の例は、/usr/local/apache/htdocs/members ディレクトリの構成です。



Options Indexes FollowSymLinks

allowoverride authconfig

order allowed,deny

allow from all



このうち、allowoverride authconfig行は、/usr/local/apache/htdocs/ members ディレクトリ内のファイルに対してユーザー認証が許可されていることを示しています。

2. アクセス制限付きディレクトリ /usr/local/apache/htdocs/members に、次の内容のファイル .htaccess を作成します:

AuthName "Member Area"

AuthType Basic

AuthUserFile/usr/local/apache /members.txt

require valid-user

説明: ファイル .htaccess でよく使用される設定コマンドは次のとおりです:

1) AuthName コマンド: 認証ゾーン名を指定します。ゾーン名は、認証を求めるダイアログ ボックスに表示され、ユーザーに表示されます (添付の図を参照)。

2) AuthType コマンド: 認証タイプを指定します。 HTTP 1.0 では、認証タイプは Basic の 1 つだけです。 HTTP1.1 には、MD5 などのいくつかの認証タイプがあります。

3) AuthUserFile コマンド: ユーザー名とパスワードを含むテキスト ファイルを 1 行に 1 組指定します。

4) AuthGroupFile コマンド: ユーザーグループのリストとこれらのグループのメンバーのリストを含むテキストファイルを指定します。グループのメンバーは次のようにスペースで区切られます:

マネージャ:user1 user2

5) require コマンド: どのユーザーまたはグループにアクセスを許可できるかを指定します。例:

require user user1 user2 (user1 と user2 のみがアクセス可能)

requiregroupsmanagers (グループマネージャーのメンバーのみがアクセス可能)

require valid-user (AuthUserFile で指定されたファイル内の任意のユーザーがアクセス可能)

3. Apache に付属のプログラム htpasswd を使用して、ユーザー名とパスワードを含むテキスト ファイル /usr/local/apache/members.txt を生成します。各行の形式は「ユーザー名:パスワード」です。

#cd /usr/local/apache/bin

#htpasswd -bc ../members.txt user1 1234

#htpasswd -b ../members.txt user2 5678

テキストファイル members.txt には次の 2 つが含まれていますユーザー: user1、パスワードは 1234; user2、パスワードは 5678。ユーザーによるダウンロードを避けるため、このテキスト ファイルを Web ドキュメントのディレクトリ ツリーに保存しないでください。

htpasswd プログラムのヘルプについては、htpasswd -h を実行してください。

ユーザー数が比較的少ない場合、この方法はユーザー認証に便利で手間がかからず、メンテナンス作業も簡単です。しかし、ユーザー数が数万人、さらには数十万人になると、ユーザーを見つけるのにある程度の時間がかかり、サーバーの効率が低下します。この場合、データベース方式を使用する必要があります。

データベースストレージの使用

現在、Apache、PHP4、および MySQL は、Linux で Web サイトを構築するための最良のパートナーです。これら 3 つのソフトウェアはすべてフリー ソフトウェアです。この 3 つを組み合わせて、PHP4 と MySQL を HTTP プロトコル経由で使用して、Apache のユーザー認証機能を実装します。

ユーザー認証はPHP4をApacheモジュールとして実行する場合のみ行えます。このため、Apache をコンパイルする場合は、PHP4 モジュールを追加して一緒にコンパイルする必要があります。 Apache のモジュールとして PHP4 を使用することを想定し、Apache を /usr/local/apache ディレクトリにコンパイルしてインストールし、MySQL を /usr/local/mysql ディレクトリにコンパイルしてインストールします。次に、次の手順に進みます:

1. MySQL でデータベース メンバーを作成し、その中に正当なユーザーのユーザー名とパスワードを保存するテーブル users を作成します。

1) vi コマンドを使用して、/tmp ディレクトリに SQL スクリプト ファイル auth.sql を作成します。内容は、

メンバーが存在する場合はデータベースを削除する;

データベース メンバーを作成する;

メンバーを使用する;

テーブルを作成するです。 users (

ユーザー名 char(20) not null,

パスワード char(20) not null,

);

insertsintosusersvalues("user1",password("1234"));

insertsintosusersvalues("user2 ",password( "5678"));

2) MySQLクライアントプログラムmysqlを起動し、上記SQLスクリプトファイルauth.sqlのコマンドを実行し、usersテーブルに2つのユーザーレコードを追加します。

#mysql -u root -pmypwd</tmp/auth.sql

2. PHPスクリプトヘッダーファイルauth.incを書きます プログラム内容は、


functionauthenticate() {

Header ( 'WWW-authenticate: Basic realm="メンバーエリア"');

Header('HTTP/1.0 401 Unauthorized');

echo "正しいユーザー名とパスワードを入力する必要があります。 ";

exit;

}

function CheckUser(, ) {

if ( == "" || == "") return 0;

= "SELECT username,password FROM usersswheresusername='' andpassword=password('')";

= mysql_connect('localhost', 'root', 'mypwd');

mysql_select_db('member',);

= mysql_query(, );

= mysql_num_rows();

if (>0) {

return 1; //有効なログイン

} else {

return 0; //無効なログイン

}

}

?>

関数Authenticate('WWW)を使用する-authenticate: Basic realm="Member Area"') は、ブラウザに認証要求メッセージを送信し、ブラウザにユーザー名/パスワードのダイアログ ボックスをポップアップさせます。ユーザーがユーザー名とパスワードを入力すると、この PHP スクリプトを含む URL が自動的に再度呼び出され、ユーザー名、パスワード、認証タイプが PHP プログラムの 3 つの特殊変数に保存されます。これら 3 つの変数値を使用して、ユーザーが正当であるかどうかを判断します。 Header() 関数では、basic は基本認証タイプを表し、realm の値は認証ゾーン名を表します。

Function Header('HTTP/1.0 401 Unauthorized') により、ブラウザ ユーザーは間違ったユーザー名またはパスワードを連続して複数回入力すると、HTTP 401 エラーが発生します。

関数CheckUser()は、ブラウザユーザーが送信したユーザー名とパスワードがMySQLデータベースのものと同じかどうかを判定するために使用され、同じであれば1を返し、そうでなければ0を返します。 mysql_connect('localhost', 'root', 'mypwd') のデータベース ユーザー名 root とパスワード mypwd は、独自の MySQL 設定に従って変更する必要があります。

3. アクセスを制限する必要がある各 PHP スクリプトの先頭に、次のプログラム セグメントを追加します:


require('auth.inc');

if (CheckUser(,)==0) {

authenticate();

} else {

echo "これは正規のユーザーがアクセスしたいWebページです。" //この行を正規のユーザーへのWebページ出力に変更します

}

?>

;正規のユーザーによって表示される Web ページのコンテンツは、上記のプログラム セグメントの 1 行を置き換えて else 句に配置されます。たとえば、ユーザーが PHP スクリプト プログラムにアクセスするときは、ユーザーの身元を確認するためにユーザー名とパスワードを入力する必要があります。

Windows版Apacheユーザー認証

1. テキストファイルを使用してユーザー名とパスワードを保存する場合、方法は以前と同じですが、パスを表すディレクトリ名の間、およびディレクトリ名の間にスラッシュを使用する必要があることに注意してくださいファイル名はバックスラッシュ "" ではなく /" になります。

2. MySQLデータベースを使用してユーザー名とパスワードを保存する場合は、まず以下の方法に従ってPHP 4.0.3をApacheモジュールとして実行し、その後上記の「ユーザーを保存するデータベースを使用したユーザー認証」の方法に従って完了させます。名前とパスワード」。

1) Windows バージョンの Apache 1.3.12、PHP 4.0.3、MySQL 3.2.32 をダウンロードし、3 つのソフトウェアをそれぞれ C: pache、C: PHP4、および C: mysql ディレクトリにインストールします。

2) C:PHP4SAPI ディレクトリには、一般的に使用される Web サーバー用のいくつかの PHP モジュール ファイルが含まれています。php4apache.dll を Apache の modules サブディレクトリ (C: pachemodules) にコピーします。

3) Apache の設定ファイル C:pache nfhttpd.conf を変更し、次の行を追加します:

LoadModule php4_module modules/ php4apache.dll

AddType application/x-httpd-php .php3

AddType application/x-httpd -php- source .phps

AddType application/x-httpd-php .php

最初の行は、ユーザー認証ができるようにPHP4をApacheモジュールとして実行するもので、最後の3行はPHPスクリプトプログラムの拡張子を定義しています。

4) autoexec.batファイルのPATHコマンドにPHP4があるパス「C:PHP4」を追加し、コンピュータを再起動します。


私のテストの後、Apache のバージョン 2.0 は動作しません



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPの目的:動的なWebサイトの構築 PHPの目的:動的なWebサイトの構築 Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHP:データベースとサーバー側のロジックの処理 PHP:データベースとサーバー側のロジックの処理 Apr 15, 2025 am 12:15 AM

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHP:サーバー側のスクリプト言語の紹介 PHP:サーバー側のスクリプト言語の紹介 Apr 16, 2025 am 12:18 AM

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHP対Python:ユースケースとアプリケーション PHP対Python:ユースケースとアプリケーション Apr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

DockerによるMySQLを開始する方法 DockerによるMySQLを開始する方法 Apr 15, 2025 pm 12:09 PM

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

なぜPHPを使用するのですか?利点と利点が説明されました なぜPHPを使用するのですか?利点と利点が説明されました Apr 16, 2025 am 12:16 AM

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

See all articles