プログラムブログ

PHP、Database、ネットワーク、サーバセキュリティ

Archive for the 'apache' Category

mod_securityとmod_rewriteの相性が悪い

POSTデータをログに記録するためmod_securityでログをとっている。そのapacheの環境でcakephpをインストールしたところPOSTデータがうまくcakephpにわたらない。そこでいろいろ調べたところ、mod_securityが干渉してmod_write経由で実際のプログラムファイルにPOSTデータが届いていないことが判明した。

mod_securityの設定を変更してPOSTデータのチェックを入れないようhttpd.confを次にしたところ解消した。

SecFilterScanPOST Off

mod_rewriteを使っているソフトはいっぱいあるので注意が必要だ。

POSTデータをログに記録できないとなるとmod_securityを動かす意味がなくなったような…

Comments are off for this post

apacheでのリダイレクト方法

とあるサイトを運営しているのだが、コンテンツはそのままでドメイン名を変更したくなった。新しいドメインを取得してコンテンツをそこに移動すればとりあえずはドメイン名の変更ができるのだが、旧URLに対して外部からリンクが張られていたり、googleなど検索エンジンで旧URLがインデックス登録されていることを考えると、何か策が必要になる。そこで旧URLにアクセスされたときは新URLへリダイレクト(301)するということになる。

Apacheであれば旧URLのトップに 次の.htaccessを作成すればよい(mod_rewriteが対応していることを前提としている)。

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://新FQDN/$1 [R=301,L]

これで私の場合は旧URLから新URLへリダイレクトされるようになった。ちなみにコマンドラインで旧URLにアクセスしたときのレスポンスは次のようになった。

telnet 旧FQDN 80

GET / HTTP/1.1
Host: 旧FQDN

(ここからレスポンス)
HTTP/1.1 301 Moved Permanently
Date: 時刻
Server: Apache
Lcation: http://新URL/
Content-Length: 数字
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href=”http://新FQDN/”>here</a>.</p>
<hr>
<address>Apache Server at 旧ドメイン Port 80</address>
</body></html>
Connection closed by foreign host.

5 comments

アップロードされてくるデータ受け取りサイズの上限をapacheで設定する

写真などの画像をアップロードするようなサイトでは、ファイルの大きさ制限等設ける必要がある。また、仮に画像ファイルでなくても、お問い合わせ画 面などユーザが入力する項目に関しては、大量のデータが挿入されて送られてくる可能性がある。そのためプログラムを記述する際にはそのあたりの考慮が必要 となってくるのだが、apacheの設定で受け取りサイズの上限を設定できることがわかった。

LimitRequestBody  数字(バイト単位)

とhttpd.confに設定してやればよい。
これによりDoSやサーバクラッシュなどを防ぐことができる。

No comments