ホームページ php教程 php手册 Linux システム Apache ユーザーの認証とアクセス制御

Linux システム Apache ユーザーの認証とアクセス制御

Jun 21, 2016 am 09:00 AM
directory htaccess httpd limit

用户授权和访问控制

你也许在访问某些网站时会遇到过这样的情况,当你点击某个连接时,你的浏览器会弹出一个身份验证的对话框,要求输入账号及密码,如果没有,就无法继续浏览了。有人会以为这是用CGI做出来的,其实不然,这是WWW服务器的用户授权和访问控制机制在发挥作用。

你是否还记得在设置Apache服务环境的过程中,有……..<./Directory>这个指令,可以对不同的目录提供不同的保护。但是这样的设定,需要重新启动服务器才会生效,灵活性较差,通过AccessFile指令指定访问控制文件的方式则比较灵活,在Apache服务器中设置用户的访问控制权限步骤如下:

1、首先对httpd.conf文件进行设置如下:

<ccid_code><Directory /home/httpd/html> # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Options Includes FollowSymLinks Indexes AllowOverride All //*注意AllowOverride 一定要设置为All,这样后面的.htaccess文件才会起作用 <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> # <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> # Order deny,allow # Deny from all # </Limit> </Directory> #指定配置存取控制权限的文件名称 AccessFileName .htaccess</ccid_code>
ログイン後にコピー

2、创建.htaccess文件內容

要控制某目录的访问权限必须建立一访问控制文件,文件名前面指定的“.htaccess”,其内容格式如下:

<ccid_code>AuthUserFile 用户帐号密码文件名 AuthGroupFile 群组帐号密码文件名 AuthName 画面提示文字 AuthType 验证方式 <Limit GET> 密码验证方式 </Limit> 用户验证方式AuthType目前提供了Basic和Digest两种。 密码检验设定方法与httpd.conf中的相关设定相同。 具体例子如下: AuthUserFile /etc/secure.user AuthName 安全认证中心 AuthType Basic <Limit GET> require valid-user </Limit></ccid_code>
ログイン後にコピー

3、建立用户密码文件

如果你是第一次创建用户密码,命令格式如下:

htpasswd -c 密码文件名 用户名称

在上面的例子中,我们将用户密码文件放到了/etc/secure.user文件中,所以这里应按照如下进行操作:

htpasswd -c /etc/secure.user sword

程序会提示你输入两次用户的口令,然后用户密码文件就已经创建sword这个用户也添加完毕了。

如果要向密码文件中添加新的用户,按照如下命令格式进行操作:

htpasswd 密码文件 用户名称

这样,重新启动httpd后,进行该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。

4、如何减少访问控制对Apache性能的影响

频繁的使用访问控制会对Apache的性能产生较大的影响,那么,如何才能减少这种影响呢?最简单也是最有效的方法之一就是减少.htaccess文件的数目,这样可以避免Apache对每一个请求都要按照.htaccess文件的内容进行授权检查。它不仅在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。

/

/usr

/usr/local

/usr/local/etc

/usr/local/etc/httpd

/usr/local/etc/httpd/htdocs

/usr/local/etc/httpd/htdocs/docs

通常在根目录下没有htaccess文件,但Apache仍然会进行例行检查以确定该文件确实不存在。这是影响很影响服务器工作效率的事情。下面的方法可以消除这个讨厌的过程:将AllowOverride选设置为None,这样Apache就会检查.htaccess文件了。将/根目录的 AllowOverride选项设为None,只将需要进行访问控制的目录下的AllowOverride选项设置为all,如下面的例子中将/根目录的 AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只在 /usr/local/etc/httpd/htdocs中检查.htaccess文件,达到的提高服务效率的目的。

<ccid_code><Directory /> AllowOverride None </Directory> <Directory /usr/local/etc/httpd/htdocs> AllowOverride All </Directory></ccid_code>
ログイン後にコピー

如果除了根目录以外,还有其它存放WWW文件的目录,你也可以采取同样的方法进行设置。比如:如果你使用UserDir来允许用户访问自己的目录,AllowOverride的设置如下:

<ccid_code><Directory /home/*/public_html> AllowOverride FileInfo Indexes IncludesNOEXEC </Directory></ccid_code>
ログイン後にコピー

5、防止用户访问指定的文件

系统中有一些文件是不适宜提供给WWW用户的,如:.htaccess、htpasswd、*.pl等,可以用达到这个目的:

<ccid_code><Files .htaccess> order allow,deny deny from all </Files></ccid_code>
ログイン後にコピー

用户访问控制三个.htaccess文件、.htpasswd和.htgroup(用于用户授权) ,为了安全起见,应该防止用户浏览其中内容,可以在httpd.conf中加入以下内容阻止用户对其进行访问:

<ccid_code><Files ~”/.ht”> Order deny, allow Deny from all </Files></ccid_code>
ログイン後にコピー

这样这三个文件就不会被用户访问了。

6、限制某些用户访问特定文件

可以对目录进行约束,要限制某些用户对某个特定文件的访问可以使用,比如:不允许非domain.com域内的用户对/prices/internal.html进行访问,可以用如下的设置:

<ccid_code><Location /prices/internal.html> order deny,allow deny from all allow from .domain.com </Location></ccid_code>
ログイン後にコピー

如果你要授于相应权限的机器没有公开的域名,请在你的/etc/hosts文件中,将其IP地址映射到某个指定的名称,然后在Location中对其进行设置,否则该选项是不起作用的。

7、只接受来自特定链接的访问

例如,只让所有来自 http://www.sina.com.cn/* 的链接的用户进入此目录,由其它链接来的访客都不得进入; " * "表示此网站底下所有的链接。其中的 http://www.sina.com.cn/* 也可以是:http://202.106.184.200/* 或是指定文件 http://www.sina.com.cn/news.html

.htaccess文件的内容如下:

<ccid_code>AuthUserFile /dev/null AuthGroupFile /dev/null AuthName ExampleAllowFromSpecificURL AuthType Basic <Limit GET> order deny,allow deny from all referer allow from http://www.sina.com.cn/* </Limit></ccid_code>
ログイン後にコピー



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

Active Directory ユーザーとコンピュータが見つからない [3 つの方法で解決] Active Directory ユーザーとコンピュータが見つからない [3 つの方法で解決] Apr 20, 2023 pm 01:25 PM

Active Directory ユーザーとコンピューター (ADUC) の損失は、多くの Windows Pro ユーザーから報告されている最もイライラする問題の 1 つです。 ADUC は、管理者が Microsoft Active Directory を管理できるようにする優れた MMC スナップインです。ただし、何らかの理由で、Windows Server または Enterprise/Pro エディションにはありません。欠落している理由とそれを修正する方法を詳しく見てみましょう。 Windows 11 には Active Directory がありますか? Active Directory は、リモートで管理したい人にとって便利です。

Laravelのtakeとlimitの使い方を詳しく解説 Laravelのtakeとlimitの使い方を詳しく解説 Mar 10, 2024 pm 05:51 PM

「Laravelのtakeとlimitの使い方を詳しく解説」 Laravelではtakeとlimitの2つがよく使われており、データベースクエリで返されるレコード数を制限するために使用されます。これらの機能は似ていますが、特定の使用シナリオでは微妙な違いがいくつかあります。この記事では、これら 2 つのメソッドの使用法を詳細に分析し、具体的なコード例を示します。 1. Take メソッド Laravel では、take メソッドは返されるレコードの数を制限するために使用され、通常は orderBy メソッドと組み合わせられます。

Laravelにおけるtakeとlimitの機能比較と使い方 Laravelにおけるtakeとlimitの機能比較と使い方 Mar 09, 2024 pm 09:09 PM

Take と limit は、Laravel でクエリ結果セットの数を制限するためによく使用される 2 つのメソッドです。機能的には類似点がありますが、使用方法や詳細がいくつか異なります。この記事では、2 つのメソッドの機能と使用法を詳細に比較し、読者がそれらの違いとそれらを正しく適用する方法をよりよく理解できるように、具体的なコード例を示します。 1.takeメソッド takeメソッドはLaravelEloquentクエリビルダーにあります

Laravelのtakeとlimitの違いを深く掘り下げる Laravelのtakeとlimitの違いを深く掘り下げる Mar 10, 2024 pm 01:00 PM

Laravelでは、クエリ結果の数を制限するために、takeメソッドやlimitメソッドなど、いくつかのメソッドをよく使用します。どちらもクエリ結果の数を制限するために使用できますが、微妙な違いがいくつかあります。この記事では、Laravelにおけるtakeとlimitの違いを詳しく掘り下げ、具体的なコード例で説明します。まずはtakeメソッドを見てみましょう。 take メソッドは Eloquent の一部であり、通常は次の目的で使用されます。

Java でストリーム操作に Stream の制限およびスキップ機能を使用する方法 Java でストリーム操作に Stream の制限およびスキップ機能を使用する方法 Jun 26, 2023 pm 03:55 PM

StreamAPI は Java 8 で導入され、コレクションの操作を大幅に簡素化できます。 Stream クラスは、フィルタリング、マッピング、マージなど、ストリームを操作するための多くの機能メソッドを提供します。このうち、limit と Skip は、ストリーム操作の要素数を制限するために使用される 2 つの関数です。 1. Limit 関数 limit 関数は、ストリーム内の要素数を制限するために使用され、制限数を表す long 型パラメータ n を受け入れます。制限関数を呼び出した後、新しいストリームが返されます。このストリームには、

ファイナルファンタジー7の制限を節約する方法 ファイナルファンタジー7の制限を節約する方法 Mar 07, 2024 pm 06:40 PM

ファイナルファンタジー7では、ダメージを受けたり、敵を攻撃したり、コンボをヒットさせたりすることで、大ダメージを与えたり、強力なサポート効果を与えたりする極限スキルを使用するための制限を蓄積することができます。ファイナルファンタジー7のリミットセーブ方法 1.ダメージを受ける キャラクターが敵から攻撃を受けたり、味方が攻撃を受けたりすると、リミットバーが徐々に増加していきます。受けるダメージが大きいほど、制限バーが早く満たされます。 2. 敵を攻撃したり、敵を積極的に攻撃したりすると、リミットバーの充填速度が増加する可能性があります。リミットは通常攻撃、スキル、魔法を使用して蓄積できます。 3.ヒットしたコンボキャラクターが連続して敵の攻撃を受けると、リミットバーの充填速度が加速します。これは、敵の注意を引くか、ホールドを使用することで実行できます。

さまざまな MySQL ページング実装 さまざまな MySQL ページング実装 Feb 19, 2024 pm 03:26 PM

MySQL のページング メソッドとは何ですか? 特定のコード例が必要です。MySQL はリレーショナル データベース管理システムです。クエリの効率を向上させ、データ送信量を削減するために、ページング クエリは非常に一般的な要件です。 MySQL にはさまざまなページング メソッドが用意されており、これらのメソッドについては以下で詳しく紹介し、具体的なコード例を示します。 LIMIT 句を使用したページング: LIMIT 句は、クエリ結果で返される行数を制限するために使用されます。 2 つのパラメータがあり、最初のパラメータは返された結果の開始オフセット位置 (0 からカウント) を指定し、2 番目のパラメータは返された結果の開始オフセット位置を指定します。

Yum Httpd が PHP を解析できない問題を解決する Yum Httpd が PHP を解析できない問題を解決する Mar 22, 2024 pm 01:06 PM

YumHttpd が PHP を解析できない問題を解決するには、特定のコード例が必要です。Web サイトを構築するときに、Yum によってインストールされた Httpd が PHP を解析できず、Web サイトのページに正常にアクセスできないという問題がよく発生します。この問題は多くの Web サイト管理者や開発者を悩ませてきましたが、この記事では、この問題の解決策と具体的なコード例を示します。まず、問題の原因を特定する必要があります。通常、必要な PHP モジュールが欠落しているか、正しく構成されていないため、Httpd は PHP を解析できません

See all articles