2004年02月22日

SecurityError

Rubyってほとんど触ったこと無いんですが、今回ちょっといろいろいじらないといけないことになって作業してたら次のようなエラーに遭遇

protocol.rb:83:in `initialize': Insecure operation - initialize (SecurityError)
なんだこれ?

調べてみると外部から渡される引数の汚染除去が終わってないときに出るエラーらしいですが、自分的に引数には結構縛り掛けてあっただけにちょっとショック(笑)

本当はちゃんと汚染除去を考えてプログラムを書き直さないといけないんですが、そんなにたいした用途に使う訳じゃないものなんで裏技で逃れることにしました。

方法はuntaintを使うだけ。
使い方は以下のような感じです。

aaa = 外部からのデータ
*func(aa.untaint) #←SecurityErrorを出す関数
まぁ、汚染されてないと思いこませるだけの裏技なんで、公開するようなサービスなんかではこういう解決方法はやめましょう(^^;

Posted by Takuchan at 2004年02月22日 00:35 | トラックバック(0)