「Apache - アクセス制御」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「== 概要 == <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