「Apache 2.4でmod rewriteを使う」の版間の差分
提供: FreeBSD入門
行40: | 行40: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo apachectl restart | sudo apachectl restart | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == セキュリティ対策としての使用例 == | ||
+ | これが本当に意味があるのか、、、ということはあまり考えないでください。 | ||
+ | === ほんのり XSS 対策っぽい === | ||
+ | |||
+ | <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]
関連項目
- Apache
- httplog
- Accept Filter
- Apache 2.4をインストールする
- Apache 2.4でmod_rewriteを使う
- PHP5.5をインストールする