「Apache - アクセス制御」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == <br><br> == ディレクトリ単位のアクセス制御 == <syntaxhighlight lang="apache"> <Directory "/srv/www/htdocs"> # Order : AllowおよびDenyの順序を決める # Allow : 許可するアクセス元を指定する # Deny : 禁止するアクセス元を指定する Order Allow,Deny # 順序は、Allowが先 Allow from all # 全て許可する Deny from 192.168.1.10 # IPアドレスを…」)
 
118行目: 118行目:
  # Internal Server Error : サーバ内で起きた何らかのエラー
  # Internal Server Error : サーバ内で起きた何らかのエラー
  ErrorDocument 500 "The server made a boo boo."
  ErrorDocument 500 "The server made a boo boo."
</syntaxhighlight>
<br><br>
== ロボットからのアクセスを制限 ==
ロボットにより収集されたくないディレクトリおよびファイルを、robots.txtファイルで指定する。<br>
<u>また、robots.txtファイルは、DocumentRootディレクトリに作成する必要がある。</u><br>
<br>
# robots.txtファイル
User-agent: *
Disallow : /hoge/
Disallow : /piyo/fuga/
<br><br>
== データタイプの追加 ==
MIMEタイプは、サーバ側で決めた後、HTTPレスポンスヘッダであるContentTypeに記述する。<br>
<br>
MIMEタイプの例を以下に示す。<br>
* テキスト
*: text/plain
* CSV
*: text/csv
* HTML
*: text/html
* CSS
*: text/css
* PHP
*: application/x-httpd-php
* XML
*: text/xml (ただし、ユーザから読めるものである場合 ([https://tools.ietf.org/html/rfc3023 RFC 3023, section 3]))
* JSON
*: application/json
* 画像
*: image/gif
*: image/bmp
*: image/jpeg
*: image/png
*: image/tiff
*: image/webp
*: image/svg+xml
<br>
<syntaxhighlight lang="apache">
# httpd.confファイル
# ファイル名の拡張子をMIMEタイプに関連付ける
AddType application/epub+zip .epub
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

2024年1月19日 (金) 19:25時点における版

概要



ディレクトリ単位のアクセス制御

 <Directory "/srv/www/htdocs">
    # Order : AllowおよびDenyの順序を決める
    # Allow : 許可するアクセス元を指定する
    # Deny :  禁止するアクセス元を指定する
 
    Order Allow,Deny          # 順序は、Allowが先
    Allow from all            # 全て許可する
 
    Deny from 192.168.1.10    # IPアドレスを完全に指定する
    Deny from 192.168.5       # IPアドレスを先頭から24ビットに限定して指定する
    Deny from 192.168.1.0/24             # サブネットマスクも併せて指定する (下の書式と等価)
    Deny from 192.168.1.0/255.255.255.0  # サブネットマスクも併せて指定する (上の書式と等価)
    Deny from sample.co.jp               # ホスト名またはドメイン名の一部を指定する
 </Directory>



ファイル単位のアクセス制御

 <File "/srv/www/htdocs/index.php">
    # Order : AllowおよびDenyの順序を決める
    # Allow : 許可するアクセス元を指定する
    # Deny :  禁止するアクセス元を指定する
 
    Order Allow,Deny          # 順序は、Allowが先
    Allow from all            # 全て許可する
 
    Deny from 192.168.1.10    # IPアドレスを完全に指定する
    Deny from 192.168.5       # IPアドレスを先頭から24ビットに限定して指定する
    Deny from 192.168.1.0/24             # サブネットマスクも併せて指定する (下の書式と等価)
    Deny from 192.168.1.0/255.255.255.0  # サブネットマスクも併せて指定する (上の書式と等価)
    Deny from sample.co.jp               # ホスト名またはドメイン名の一部を指定する
 </File>
 
 # htdocsディレクトリ内に存在するファイルを全て指定する場合
 <File "/srv/www/htdocs/*">
    # ...略
 </File>
 
 # htdocsディレクトリ内のindexから始まるファイル名を指定する場合
 <File "/srv/www/htdocs/index*">
    # ...略
 </File>
 
 # .htaccessファイルを指定する場合
 # これにより、外部から.htaccessファイルを閲覧することができなくなる
 <Files ~ "^.*\.([Hh][Tt][Aa][Cc][Cc][Es][Ss][Ss])">
    # ...略
 </File>



HTTPリクエストヘッダ情報で制限

HTTPリクエストヘッダのWebブラウザの種類の情報、リンク元の情報により、アクセス制限を行う。

※注意
HTTPリクエストヘッダを確認する場合、
Chromium系ブラウザでは chrome://net-internals/#events にアクセスして、"type:URL_REQUEST"で検索することにより確認できる。


ユーザエージェントによる制限

HTTPリクエストヘッダには、Webブラウザの情報やOSの情報等(ユーザエージェント)が含まれている。

以下の例では、HTTPリクエストヘッダのUser-AgentヘッダにMozillaという文字列が含まれている場合のみアクセスを許可している。

 <Directory "/usr/local/apache2/htdocs">
    # BrowserMatch : User-Agentヘッダ内に"Mozilla"という文字列が正規表現がマッチする場合は、環境変数mozillaを設定
    BrowserMatch "Mozilla" mozilla
 
    Order Deny,Allow
    Deny from all
 
    # 環境変数mozillaが設定されている場合は、アクセスを許可する
    Allow from env=mozilla
 </Directory>



Refererによる制限

Referer (リンク元のURL情報) によるアクセス制御は、Webページ内の画像にディープリンク(直リンク)されたくない場合、または、アクセス解析を混乱させるリファラーSPAM対策時に有効である。

 <Directory "/srv/www/htdocs/icons">
    # SetEnvIf: 指定した対象に正規表現がマッチする場合、環境変数を設定する
    # 任意のHTTPリクエストヘッダを対象にできる
 
    # Refererヘッダに www.example.jp が含まれている場合、環境変数exampleを設定
    SetEnvIf Referer "www\.example\.jp" example
    Order Deny,Allow
    Deny from all
 
    # 環境変数exampleが設定されている場合はアクセスを許可する
    Allow from env=example
 </Directory>



エラーメッセージの変更

 # Payment Required : 料金の支払いを行うまで、リクエストが処理できない状態
 ErrorDocument 402 http://www.example.com/subscription_info.html
 
 # Forbidden : 閲覧権限が無いファイルやディレクトリ
 ErrorDocument 403 /deny.html
 
 # Not Found : Webページが見つからない場合
 ErrorDocument 404 /missing.html
 
 # Not Found : Webページが見つからない場合 (CGIを使用することも可能)
 ErrorDocument 404 "/cgi-bin/missing_handler.pl"
 
 # Internal Server Error : サーバ内で起きた何らかのエラー
 ErrorDocument 500 "The server made a boo boo."



ロボットからのアクセスを制限

ロボットにより収集されたくないディレクトリおよびファイルを、robots.txtファイルで指定する。
また、robots.txtファイルは、DocumentRootディレクトリに作成する必要がある。

# robots.txtファイル

User-agent: *
Disallow : /hoge/
Disallow : /piyo/fuga/



データタイプの追加

MIMEタイプは、サーバ側で決めた後、HTTPレスポンスヘッダであるContentTypeに記述する。

MIMEタイプの例を以下に示す。

  • テキスト
    text/plain
  • CSV
    text/csv
  • HTML
    text/html
  • CSS
    text/css
  • PHP
    application/x-httpd-php
  • XML
    text/xml (ただし、ユーザから読めるものである場合 (RFC 3023, section 3))
  • JSON
    application/json
  • 画像
    image/gif
    image/bmp
    image/jpeg
    image/png
    image/tiff
    image/webp
    image/svg+xml


 # httpd.confファイル
 
 # ファイル名の拡張子をMIMEタイプに関連付ける
 AddType application/epub+zip .epub