[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002659] スクリプ ト検査



堀之内です。

# subject 変えますので、全文引用ご容赦を(末尾)。

> > 面白いのですが、set_trace_func ってなかなか高価なんですよね。
> これを使ったベンチマークとかもそうとう遅いですよね
> 
> > あからさまな穴としては END{ } が使える点でしょうか。
> > DOSも防ぎようがないですね。begin raise rescue retry end みたいな。
> > フックがあるのは何とかなるのですが rescue みたいなのは
> > この方法では手が出せないのかも。
> 確かにこれを防ぐ方法はありませんね。
> やっぱりセキュリティー問題は難しいですね。

よくわかってないので、以下、勘違いでしたらごめんなさい。

西澤君の実装では、あらかじめ指定したクラスのオブジェクト
以外はが出来たら例外が上がるようになってて、許された
クラスにおいても、決められたメソッドしか実行されないよう
になっているのですよね。それは、rescue 節の中でも
同じでは? (つまり rescue の中で不許可なオブジェクトが
できたら例外が上がっておしまい)

そもそもの動機は、西澤君も書いてるように、
データ公開サーバーでの利用です。この場合、利用者に対して
みせる対象は、基本的にはDBから検索した結果得られたGPhys オ
ブジェクトです。GPhys を用いたデータ解析においては、派生して
作られるオブジェクトも、GPhys や String, Numeric, NArray
など、かなり限られたものになるのが通常なので、
受け付けるクラスを大きく限定しておいても使い物に
なるのでは?という発想です。

スクリプトをまるごと受け付ける代わりに、
ご紹介の tryruby のように、一行一行受け付けるのでも
いいんじゃないかと思います。安全性に関する話は
どっちでも変わらないかもしれませんが、一行一行受け付ける
例として tryruby での実装方法は気になります。

ところで、西澤君、スクリプトにおけるデータの受け渡し
方法はどうしたらいいんでしょうね。検索された GPhys 
オブジェクトをどう受け取るか、また、結果をどう
サーバーに渡すかですね。メソッドを登録する?

話を少し変えます。

安全性に関する慎重な配慮は、サーバー側で実行することを
考えるから必要になるわけですよね。ruby スクリプトを
javascript のようにクライアント側で実行できたら
だいぶ楽になるわけですが、IEとかmozilla用にそういう
プラグインはないですかね。

-----------------------------------------------------------------
Subject: [dennou-ruby:002656] Re: 名前問題 = ruby  は何故流行ったか

> 西澤です。
> 
> コメントありがとうございます。
> 
> 06/07/07 に GOTO Kentaro<gotoken@xxxxxxxxx> さんは書きました:
> 
> > 面白いのですが、set_trace_func ってなかなか高価なんですよね。
> これを使ったベンチマークとかもそうとう遅いですよね
> 
> > あからさまな穴としては END{ } が使える点でしょうか。
> > DOSも防ぎようがないですね。begin raise rescue retry end みたいな。
> > フックがあるのは何とかなるのですが rescue みたいなのは
> > この方法では手が出せないのかも。
> 確かにこれを防ぐ方法はありませんね。
> やっぱりセキュリティー問題は難しいですね。
> 
> >
> > > 同様なものはすでにあってもおかしくないのですが、
> > > 見当たりませんでした。
> >
> > 聞いたことないですね。結局のところ保障するのは無理だから
> > だれも作らないというのが実情じゃないかと思います。
> > いちおう建前としては $SAFE = 4 がそのためのものということにはなっています。
> > http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%BB%A5%AD%A5%E5%A5%EA%A5%C6%A5%A3%A5%E2%A5%C7%A5%EB#a.a5.ec.a5.d9.a5.eb.204
> >
> 勉強になります。
> 最低限 $SAFE=4 にするべきですね。
> 
> > で、もともと動機に遡って考えてみるに、
> > たぶん、webサービスはイヤだから、druby とかもっとカジュアルな
> > 実行環境の提供をしたいということなのでしょうが、
> > 管理された実行環境の生成はインタプリタインスタンスを
> > 言語が用意してくれない限りできなさそうだというのが僕の印象です。
> > ささださんにそういうのをねだりまくるというのはあるかもしれません。
> > 自分たちで出来る解としては機能はwebサービスで提供して
> > クライアントサイドに対してそのサービス用の ruby バインディングを
> > 用意するというのがひとつの落としどころのような気がします。
> まだボーと思い浮かべているだけなので、
> 決まった形はありませんが、
> ユーザーエンドではwebブラウザがあれば、
> たいていの描画、解析はできる、
> みたいなことを考えています。
> 8月頭に北大で集まることになっていますので、
> この議論もふまえてどうするか考えていきたいと思います。
> 
> 
> -- 
> Seiya Nishizawa
> Research Institute for Mathematical Sciences, Kyoto University
> Oiwake-cho Kitarakawa Sakyo-ku Kyoto, Japan, 606-8502
> Tel: +81-75-753-7252
> Fax: +81-75-753-7272
> 

--
堀之内 武  <horinout@xxxxxxxxxxxxxxxxxx>
611-0011 宇治市五ヶ庄  京都大学生存圏研究所