2004-10-06 (Wed) [長年日記]
_ [ソフトウェア][mod_ruby] mod_rubyでcomment spamのフィルタリング
mod_securityでフィルタリングしているつもりだったのだが、URIが 正規化されてしまうことをすっかりわすれていた。
というわけで、mod_rubyでフィルタリング。
require "singleton"
class SpamFilter
include Singleton
def check_access(r)
if %r%/\\./%.match(r.unparsed_uri)
return Apache::FORBIDDEN
end
return Apache::OK
end
end
これをspam-filter.rbという名前で、Rubyのロードパスに置いて、 httpd.confに
<Directory /home/shugo/public_html/jit/>
RubyRequire "spam-filter"
RubyAccessHandler SpamFilter.instance
</Directory>
のように記述すればOK。
_ [Ruby] BlueClothの_
BlueClothで、
mod_ruby, mod_perl
が
<p>mod<em>ruby, mod</em>perl</p>
になっちゃうのはバグ?
仕様だとしたら使いにくいなあ。
追記: よく考えたら、やっぱり仕様か。うーん
_ [mod_ruby] mod_ruby (2)
ところで、この制限はどうしても必要なのでしょうか。errorでなくて、warningにとどめて欲しいと思うのですが(riskを知っててworld writableにしているはずだし)。mod__rubyの制限ではなくて、RubyやApacheの制限なのでしょうか。
[hysteric programmer diaryより引用]
Rubyの仕様ですね。
excelsior:~$ mkdir foo
excelsior:~$ chmod 777 foo
excelsior:~$ cd foo
excelsior:foo$ ruby1.8 -e '$SAFE=1; require "date"' -e 0
-e:1: warning: Insecure world writable dir /home/shugo/foo/., mode 040777
-e:1:in `require': loading from unsafe path /home/shugo/ruby:/usr/local/lib/site_ruby/1.8:/usr/local/lib/site_ruby/1.8/i386-linux:/usr/local/lib/site_ruby:/usr/lib/ruby/1.8:/usr/lib/ruby/1.8/i386-linux:. (SecurityError)
from -e:1
「riskを知っててworld writable」というのは微妙で、過去の問い合わせでは いずれも意識されてなかったりしました:(
どうしても、ということでしたら、httpd.confのトップレベルで、
RubySafeLevel 0
とすると、$SAFE == 0の挙動になります。
_ [ソフトウェア] Visual Studio .NET 2003
VMwareにインストールしようとしたら、内部エラーとか言ってこけてくれた。
%TEMP%にあるVSMsiLog*.txtを見ると、
CADpc: SCC finished with status 1603
CADpc: failed with error 1603
というエラーが、調べるとどうもCD-ROMへのアクセスに関するエラー のようだ。
VMwareの設定を見ると、なぜかCD-ROMドライブの設定のlegacy emulationが オンになっていた(たぶん、一時期、ide-scsiを外してた時があったので、その時にオンにしたのだと思う)ので、これをオフにしたら無事インストールできた。