「Apache 2.4でmod rewriteを使う」の版間の差分

提供: FreeBSD入門
移動: 案内検索
 
行40: 行40:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
sudo apachectl restart
 
sudo apachectl restart
 +
</syntaxhighlight>
 +
 +
== セキュリティ対策としての使用例 ==
 +
これが本当に意味があるのか、、、ということはあまり考えないでください。
 +
=== ほんのり XSS 対策っぽい ===
 +
 +
&lt;script が URI, クエリストリングにある場合に、400を返します。
 +
<syntaxhighlight lang="apache">
 +
RewriteEngine on
 +
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \<script [NC]
 +
RewriteRule .* / [F,L,R=400]
 +
</syntaxhighlight>
 +
=== ほんのり ディレクトリトラバーサル 対策っぽい ===
 +
../.. が URI, クエリストリングにある場合に、400を返します。
 +
<syntaxhighlight lang="apache">
 +
RewriteEngine on
 +
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \.\./\.\. [NC]
 +
RewriteRule .* / [F,L,R=400]
 +
</syntaxhighlight>
 +
 +
=== セキュリティ対策っぽいまとめ ===
 +
<syntaxhighlight lang="apache">
 +
RewriteEngine on
 +
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \<script [NC,OR]
 +
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \.\./\.\. [NC]
 +
RewriteRule .* / [F,L,R=400]
 
</syntaxhighlight>
 
</syntaxhighlight>
  

2014年6月16日 (月) 00:49時点における最新版

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]

関連項目