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

Apacheサーバーのユーザー認証

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

apache|サーバー

著者: Xu Hui

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

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

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

この認証方法の基本的な考え方は、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 ディレクトリの構成です:


<ディレクトリ /usr/local/apache/htdocs /members>

Options Indexes FollowSymLinks

allowoverride authconfig

orderこのうち、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 コマンド: ユーザー グループのリストとこれらのグループのメンバーのリストを含むテキスト ファイルを指定します。グループのメンバーは、managers:user1 user2 のようにスペースで区切られます。

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

require user user1 user2 (user1 と user2 のみがアクセスできる)

require group manager (グループ マネージャーのメンバーのみがアクセスできる)

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 を実行してください。

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

現在、Apache、PHP4、および MySQL は、Linux で Web サイトを構築するための最良のパートナーです。これらの 3 つのソフトウェアはすべてフリー ソフトウェアです。この 3 つを組み合わせ、HTTP プロトコル経由で PHP4 と MySQL を使用して、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 (

username char(20) not null,

password char(20) not null,

);

users に挿入 value("user1",password("1234")); value("user2 ",password("5678"));

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

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

2. PHP スクリプトのヘッダー ファイル auth.inc を作成します。 プログラムの内容は次のとおりです。 ( WWW-authenticate: Basic realm="メンバーエリア");

Header(HTTP/1.0 401 Unauthorized);

echo "正しいユーザー名とパスワードを入力する必要があります。n"; function CheckUser($uname, $pwd) {

if ($uname == "" || $pwd == "") return 0;

$query = "ユーザーからユーザー名、パスワードを選択 WHERE ユーザー名=$uname およびパスワード =password($pwd)";

$db_id = mysql_connect(localhost, oot, mypwd);

mysql_select_db(member,$db_id);

$result = mysql_query($query, $db_id);

$ num =mysql_num_rows($result);

mysql_close($db_id);

if ($num>0) { // 有効なログイン

} else {

return 0;
}

}

?>

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

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

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

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


require(auth.inc);

if (CheckUser($PHP_AUTH_USER,$PHP_AUTH_PW) 0) {

authenticate();

} else {

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

}

?>

Place 正規のユーザーに表示する必要がある Web ページのコンテンツは、上記のプログラム セグメントの 1 行を置き換えて else 節に配置されます。

echo 「これは正規のユーザーがアクセスしたい Web ページです。」 ;

このように、ユーザーが PHP スクリプト プログラムにアクセスする際には、ユーザーの身元を確認するためにユーザー名とパスワードが必要になります。

3. 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:apache、C:PHP4、および C:mysql ディレクトリにインストールします。

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

3) Apache の設定ファイル C:apacheconfhttpd.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」を追加し、コンピュータを再起動します。



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

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

ApacheでCGIディレクトリを設定する方法 ApacheでCGIディレクトリを設定する方法 Apr 13, 2025 pm 01:18 PM

ApacheでCGIディレクトリを設定するには、次の手順を実行する必要があります。「CGI-Bin」などのCGIディレクトリを作成し、Apacheの書き込み許可を付与します。 Apache構成ファイルに「Scriptalias」ディレクティブブロックを追加して、CGIディレクトリを「/cgi-bin」URLにマッピングします。 Apacheを再起動します。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

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

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

Apacheバージョンを表示する方法 Apacheバージョンを表示する方法 Apr 13, 2025 pm 01:15 PM

Apacheサーバーでバージョンを表示するには3つの方法があります。コマンドライン(Apachectl -vまたはapache2ctl -v)を介して、サーバーステータスページ(http://< server ipまたはdomain name>/server -status)を確認します。

Apache80ポートが占有されている場合はどうすればよいですか Apache80ポートが占有されている場合はどうすればよいですか Apr 13, 2025 pm 01:24 PM

Apache 80ポートが占有されている場合、ソリューションは次のとおりです。ポートを占有するプロセスを見つけて閉じます。ファイアウォールの設定を確認して、Apacheがブロックされていないことを確認してください。上記の方法が機能しない場合は、Apacheを再構成して別のポートを使用してください。 Apacheサービスを再起動します。

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

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

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

See all articles