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

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



西澤です。

06/07/10 に Takeshi Horinouchi<horinout@xxxxxxxxxxxxxxxxxx> さんは書きました:

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

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

西澤君の実装では、あらかじめ指定したクラスのオブジェクト
以外はが出来たら例外が上がるようになってて、許された
クラスにおいても、決められたメソッドしか実行されないよう
になっているのですよね。それは、rescue 節の中でも
同じでは? (つまり rescue の中で不許可なオブジェクトが
できたら例外が上がっておしまい)
僕の解釈も間違っているかも知れませんが、
DOS攻撃のことを書いてるのだと思っているのですが。
retryがあるのでぐるぐる回って負荷が上がるということでは?
書いているうちに、解釈が間違ってるような気がしてきました。

END問題は、
プロセスを分て、結果は何らかの方法で通信するとかすればよいのかな?

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

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

ところで、西澤君、スクリプトにおけるデータの受け渡し
方法はどうしたらいいんでしょうね。検索された GPhys
オブジェクトをどう受け取るか、また、結果をどう
サーバーに渡すかですね。メソッドを登録する?
gphys(or gphysの配列)をうけて、結果のgphysを返すと考えていました。
実装方法や、やりたいことによって変るとは思いますが。


話を少し変えます。

安全性に関する慎重な配慮は、サーバー側で実行することを
考えるから必要になるわけですよね。ruby スクリプトを
javascript のようにクライアント側で実行できたら
だいぶ楽になるわけですが、IEとかmozilla用にそういう
プラグインはないですかね。
このサーバーで解析、描画したいという目的は
- ブラウザさえ入っていれば、たいていの解析ができる。
- 大きなデータをダウンロードしなくても、絵を書いたり、解析した結果の小さなデータだけdownloadすることができる。
みたいなことだと思ってたのですが、
手元で実行が必要になると、
このサーバーのメリットが半減すると思うのですが。
(データをダウンローでして、手元で解析するのとあまり変らない気がします)
目的の認識が間違ってるかも知れませんが。

--
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