頑張らない!でも諦めない!必死にならずにええかげん

LimitディレクティブでGET,POSTを制限する

   

WordPressなどのCMSを利用してブログを公開していると、
コメントスパムやピンバックスパムの標的になることもあります。
そんな時には特定ホストから以外はPOSTを制限してしまうことが近道です。
ここでは.htaccessを利用してPOSTを制限する手順をご紹介します。

 

LimitディレクティブでGET,POSTを制限する

コメントの投稿やピンバックなどで利用されるPOSTメソッドによるデータ送信は、
ユーザー登録やCMSなどの投稿を行う際にも利用されます。
よく目にする機会があるのは、お問い合わせフォームかもしれません。

その為、すべてのPOSTを制限してしまうと、
管理者(自分)自身の作業の妨げになりかねません。

その為、Limitディレクティブを利用した制限では、
許可・不許可(拒否)を指定して制限を行うことができるようになっています。

当サイトでも、特定のホスト(IP)から以外のPOSTはすべて制限をしています。

以前は、コメントを有効にしていたのですが、
スパムの餌食になってからまずはてっとり早く処理する方法として、
問合せフォームもありませんでしたし、コメントを閉じるという選択をしました。

一旦、すべて閉じた上で必要に応じて、
または有効な手立てが見つかってからコメントを再開すればいいかなという力感でいます。

 

さて、まずLimitによる特定のメソッドを制限するにあたって、
公式のマニュアルでは以下のように書かれています。

<Limit> ディレクティブ|core – Apache HTTP サーバ (抜粋引用)

<Limit> ディレクティブ

説明: 囲いの中にあるアクセス制御の適用を特定の HTTP メソッドのみに 制限する
構文: <Limit method [method] … > … </Limit>
コンテキスト: サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess
上書き: All
ステータス: Core
モジュール: core

 

<LimitExcept>による逆指定を行う方法の方が、
より便利かもしれませんが、取り急ぎは制限したいものを記載する方法を選択しています。

※<Limit>では記載したメソッドの利用を制限します。(その他は許可される)
※<LimitExcept>では記載したメソッドのみ許可されます(その他は制限される)

<LimitExcept>を選択したほうが未知な部分を広範囲に制限ができますので、
より安全であるとは思います。
普段接点のないメソッドが多くあるのが以下でわかります。

<LimitExcept> ディレクティブ|core – Apache HTTP サーバ

メソッド名には以下の中から一つ以上を列挙することができます: GET, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND,PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK. メソッド名は 大文字小文字を区別します。 GET を指定した場合には HEAD リクエストにも制限がかかります。TRACE メソッドに制限をかけることはできません。

 

記述方法

<Limit>ディレクティブの一番簡単な記述例を軽くご紹介します。

 

全POST要求拒否

すべてのPOST要求を拒否します。

 

CMSなどを利用しておらず、誰一人POST(送信や登録など)を行わないなら、
こうした運用も可能でしょう。

しかし、何らかの条件でPOSTを許可することがほとんどです。

そんな場合には以下のように指定します。

 

特定のIPアドレスからの要求のみ許可

特定のIPアドレスからの要求を許可する場合には、
全て拒否の設定の後に「allow from (IPアドレス)」で記載します。

 

これによって、
自分がアクセスする場合には許可するといったようなことができるようになります。

が、

自分が常に固定グローバルIPのみを利用していることはほぼないはずです。

自宅はともかく、スマホなどでは接続に利用されるグローバルIPアドレスが、
都度変更されるのが通常です。

そこで、IPアドレスの指定にはIPネットワーク帯によって指定すると便利です。

 

例えば、上記設定の「106.188.144.28」はUQ WiMaxを利用して、
私が接続を行った際に表示されたIPアドレスです。

しかしながら、プロバイダが利用しているIPアドレス帯は、
公開されていない場合が多くあります。
※携帯キャリアであればしっかり公開されているのですが。

 

そのような場合には、以下のように紐解いて、
プロバイダが保有しているグローバルIPアドレスを検索します。

 

私の場合、UQ WiMaxで接続していますので、
以下のように設定を行うことになります。

 

プロモーション(btm)

Google or AdMax Promotion (it)

さいごに

このように設定をおこなうことで(必ずしもこれが正解というわけではない)、
自分がアクセスした場合のみPOSTができるようにするといった制御ができるようになります。

 


*本ページ内に記載されされた各社ブランド、サービス名、商標、登録商標については、
各社ブランドのロゴや商標等に関する帰属についてをご確認ください


最後までお読みいただきありがとうございました。

アイキャッチ画像に利用させて頂いております、各社ブランドのロゴやシンボルに関しては、
各社ブランドのロゴや商標等に関する帰属についてをご確認頂けますようお願い致します。

AdMax Promotion

ブログ記事のご紹介
すべて展開 | すべて省略

Rakuten Promotion

ページ
すべて展開 | すべて省略

 - Apache

  関連記事

eye_local_apache
(apache 2.0.65)ローカル環境(windows)へのApache設置

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_apache_fcgi
PHPをmod_fcgidやmod_fastcgiでFastCGI実行する方法

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_apache
IPアドレスから.htaccess用のネットマスク変換できるサイトが便利

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
1つのPC(サーバー)で複数のApacheをインストールして利用する方法

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
Apache2.0.xのhttpd.confを手動で作成する方法

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
1つのPC(サーバー)に複数のApacheをエラーを避けて暫定インストール

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
Apache2.0.xの初期設定をVBScriptを利用して1発で完了する方法

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_local_apache
[コンピュータに MSVCR110.dllがない]とApacheMonitor.exeを起動して言われた場合

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_php
PHPを1行目の[#!php-cgi]を省いて(書かずに)CGI実行する方法

Google or AdMax Promotion(it) 禁断の機能がau公式 …

eye_apache_fcgi
(mod_fcgid on 2.0.x)windowsでCGIをFastCGIで実行するように設定したかった

Google or AdMax Promotion(it) 禁断の機能がau公式 …