From: Taku Nakajima Date: 2003-03-26T14:58:23+09:00 Subject: [ruby-list:37427] Re: Secure「ではない」script の書き方 中島@ブレーンです。 At Wed, 26 Mar 2003 11:07:45 +0900, Tanaka Akira wrote: > > In article , > Taku Nakajima writes: > > > t2 = t + "aaa" > > t3 = t[0] > > t4 = t.scan(/./)[0] > > > > t2〜t4はtainted?フラグがONの状態で生まれます。 > > t3 は違うと思いますが。 そうですね。 t3 = t[0..1] にします。 > > * そのオブジェクトは外部環境の変更に使用されることはない > > > > 次のようにそのオブジェクトが一時的なオブジェクトで、用途が限定され > > ている場合には、外部から来たオブジェクトをuntaintしてもかまいません。 > > > > eval %Q[puts '#{text.untaint}'] > > text = "', system('ls'), '" > > とかだったとしても? うわっ! 典型的な穴が開いてましたね。 eval %Q[puts '#{text.gsub("'", "\\\\'").untaint}'] でどうでしょうか? -- 「stableでなければ生きていけない。unstableでなければ生きてる意味がない」 中島 拓 (株)ブレーン 研究部 (tnakajima@brain-tokyo.jp) http://www.brain-tokyo.jp/research/amrita/