blog.fuktommy.com

声のかけら。にDigest認証をかけてみたよ

bbs.fuktommy.com声のかけら。 で作られています。 今回解決しようとした問題は次の2つです。

どちらも完全に防ぐことは難しいですが、 ある程度防げればいいかなあ、という程度です。 必要な箇所だけにDigest認証をかけることにしました。

スパム投稿の制限は、POSTに限ってダイジェスト認証をかけるという作戦で、 これは検索すると定番の設定が出てきます。

<Location "/">
    <Limit POST>
        Require valid-user
    </Limit>
</Location>

検索履歴を削除するのの制限というのはどういうことかというと、 hogeという単語で検索すると、それが履歴に残り、 ?mycmd=delsearch&myword=hoge にアクセスすると 履歴から消えるという仕組みになっています。 これってPOSTでやるべきじゃね、という説もありますが、 直すのめんどくさいので今回はGETのままでやりました。 投稿もPOSTだけに制限されてるのか謎。

RewriteEngine On
RewriteCond %{QUERY_STRING} mycmd=delsearch
    RewriteCond %{LA-U:REMOTE_USER} ^$
    RewriteRule ^$ /login/ [R]
<Location "/login/">
    Require valid-user
</Location>

/login/ って何かというと、 docrootで ln -s . login として作ったシンボリックリンクです。 Apacheの設定だけでやろうとしたけど、うまく行かなかった。 んで、削除URLにアクセスしようとすると、 /login/ に飛ばされて、Digest認証を要求されるという仕組み。 %{LA-U:REMOTE_USER} のところは思ったように機能してないんだけど、 これを外すと /login/ に2回アクセスしてる。謎。

パスワードファイルはこんな感じにして作る。

% htdigest -c bbs.fuktommy.com bbs.fuktommy.com guest

全体をまとめた設定ファイルはこんな感じ。

<VirtualHost *>
    ServerAdmin webmaster@fuktommy.com
    DocumentRoot /srv/www/bbs.fuktommy.com
    ServerName bbs.fuktommy.com
    ErrorLog /var/log/httpd/bbs.fuktommy.com.error.log
    CustomLog /var/log/httpd/bbs.fuktommy.com.access.log combined

    <Directory "/srv/www/bbs.fuktommy.com">
        Options +Indexes +ExecCGI
        AllowOverride None

        RewriteEngine On
        RewriteCond %{QUERY_STRING} mycmd=delsearch
            RewriteCond %{LA-U:REMOTE_USER} ^$
            RewriteRule ^$ /login/ [R]
    </Directory>

    <Location "/">
        AuthType Digest
        AuthName "bbs.fuktommy.com"
        AuthUserFile /srv/passwd/bbs.fuktommy.com
        <Limit POST>
            Require valid-user
        </Limit>
    </Location>

    <Location "/login/">
        Require valid-user
    </Location>
</VirtualHost>
Copyright© 1998-2014 Fuktommy. All Rights Reserved.
webmaster@fuktommy.com (Legal Notices)