Apache、.htaccessで特定のページ、IP、ファイルなどアクセス制限をかける!

Apache / .htaccess

運営するWebサイトで、特定のフォルダやファイルを一般公開せずに保護したいと考えていませんか?例えば、管理者専用の設定ファイルや、特定のIPアドレスからのみアクセス可能にしたい場合など、.htaccessを使えば簡単に設定できます。本記事では、フォルダやファイルごとのアクセス制限を実現する手順を詳しく解説します。

コード

すべてのユーザーからのアクセスが拒否されます。

<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
Apache

Require all denied:この記述により、すべてのユーザーからのアクセスが拒否されます。

特定のIPのみ拒否したい場合

<IfModule mod_authz_core.c>
    Require all granted
    Require not ip 203.0.113.0
    Require not ip 198.51.100.0
</IfModule>
Apache

Require all granted:基本的にすべてのアクセスを許可します。
Require not ip:指定されたIP(ここでは203.0.113.0と198.51.100.0)を拒否します。

特定のIPのみ許可したい場合

<IfModule mod_authz_core.c>
    Require ip 203.0.113.0
</IfModule>
Apache

Require ip 203.0.113.0:203.0.113.0 からのアクセスのみ許可します。
他のすべてのアクセスはデフォルトで拒否されます。

自分のIPを正確に確認して設定してください。自分のIPを正確に確認して設定してください

HTTP メソッドに基づいてアクセス制限を設定します

GET と POST のリクエストのみを許可する

<Limit GET POST>
    Require all granted
</Limit>
Apache
  • 意味: GET と POST メソッドのみアクセスを許可します。
  • 注意点: 他のメソッド(PUT, DELETE など)はこの <Limit> ブロックの対象外となり、Apacheのデフォルト設定(通常は許可)に従います。
    完全に他のメソッドを拒否したい場合は <LimitExcept> を併用する必要があります。

GET と POST のリクエストのみを拒否する

<Limit GET POST>
    Require all denied
</Limit>
Apache
  • 意味: GET と POST メソッドは拒否します。
  • 注意点: 他のメソッド(PUT, DELETE など)はこの制限の対象外なので、許可される可能性があります

GET と POST 以外のメソッドを拒否する

  • 意味: GET と POST 以外のリクエスト(PUT, DELETE, OPTIONS など)をすべて拒否します。
  • よくある用途: フォーム送信やページ閲覧は許可したいが、それ以外(特に変更系操作)はブロックしたい場合。
<LimitExcept GET POST>
    Require all denied
</LimitExcept>
Apache

特定のファイル

ファイルの指定

<Files "secret.txt">
    Require all denied
</Files>
Apache

フォルダ内の secret.txt ファイルへのアクセスを拒否します。

複数ファイルを指定する場合

<FilesMatch "\.(log|bak)$">
    Require all denied
</FilesMatch>
Apache

log または .bak で終わるすべてのファイルへのアクセスを拒否します。

コメント

タイトルとURLをコピーしました