Apache 2.4でmod rewriteを使う
提供: FreeBSD入門
スポンサーリンク
Apache 2.4でmod_rewrite(mod rewrite)を有効にする方法を説明します。mod_rewriteが動かない、というときにも見てください。
読み方
- mod_rewrite
- もっど りらいと, もどりらいと
目次
概要
Apache 2.4で mod_rewriteを有効にする方法です。
エラー
Apacheの設定が足りないと下記のエラーがでます。 OptionsでFollowSymLinksとSymLinksIfOwnerMatchを設定します。
[Sat Mar 08 23:14:59.722373 2014] [rewrite:error] [pid 16364] [client 192.168.60.1:63091] AH00670: Options FollowSymLinks and SymLinksIfOwnerMatch are both off, so the RewriteRule directive is also forbidden due to its similar ability to circumvent directory restrictions : /home/foo/public_html/security/OpenSSL, referer: http://localhost/security/index.php?title=nmap
設定
/usr/local/etc/apache24/httpd.conf で mod_rewrite を有効にします。
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
Options で SymLink の設定を追加します。
<Directory /home/foo/public_html/> Require all granted DirectoryIndex index.php index.html index.htm AllowOverride All Options Indexes FollowSymLinks SymLinksIfOwnerMatch </Directory>
使い方
Apacheを再起動をして、設定を反映します。
sudo apachectl restart
セキュリティ対策としての使用例
これが本当に意味があるのか、、、ということはあまり考えないでください。
ほんのり XSS 対策っぽい
<script が URI, クエリストリングにある場合に、400を返します。
RewriteEngine on RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \<script [NC] RewriteRule .* / [F,L,R=400]
ほんのり ディレクトリトラバーサル 対策っぽい
../.. が URI, クエリストリングにある場合に、400を返します。
RewriteEngine on RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \.\./\.\. [NC] RewriteRule .* / [F,L,R=400]
セキュリティ対策っぽいまとめ
RewriteEngine on RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \<script [NC,OR] RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \.\./\.\. [NC] RewriteRule .* / [F,L,R=400]
関連項目
- Apache
- httplog
- Accept Filter
- Apache 2.4をインストールする
- Apache 2.4でmod_rewriteを使う
- PHP5.5をインストールする
ツイート
スポンサーリンク