From: Yukihiro Matsumoto Date: 2005-07-18T07:37:18+09:00 Subject: [ruby-dev:26560] Re: $SAFE=1 の open-uri で redirect 時にエラー まつもと ゆきひろです In message "Re: [ruby-dev:26559] Re: $SAFE=1 の open-uri で redirect 時にエラー" on Mon, 18 Jul 2005 04:22:06 +0900, Takaaki Tateishi writes: |taint機構を理解して、そこから安全性を推測するくらいなら、taint機構そのものを |ruby内で閉じて定義した方が良さそうです。 おっしゃることはわかるのですが、残念なことに私にはまだ 「taint機構そのものをruby内で閉じて定義」するとどういう風に なるのかイメージが掴めません。 |> たとえば、perlsec の最初のほうに |> |> You may not use data derived from outside your program to affect some- |> thing else outside your program--at least, not by accident. |> |> という記述で始まるパラグラフがあります。これは perl の taint 機構が何 |> を禁止するかという方針を (未定義な安全性とか危険性という言葉を使わずに) |> 表現しています。 | |未定義なものを使わないということ以外に、プログラム言語のレベルで表現している点も |良いと思いました。 うーん、方針が明確にしてあることはRubyの現状よりもずっと良い ことだと思うのですが、では、たとえば今回のredirectの場合には 禁止されるのか、許可されるのかよくわかりません。redirect先 (URI)はdata derived from outside your programなので、このURI をopen することでaffect something else outside your program してしまう可能性は否定できないので禁止、なんですかね。 で、Rubyのtaintでなにを実現したいかについては確かに明確になっ ていないですね。もうちょっと考えます。 まつもと ゆきひろ /:|)