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

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



06/07/07 に Seiya Nishizawa<seiya@xxxxxxxxxxxxxx> さんは書きました:
描画解析webサーバの立ち上げ構想で、
デフォルトで用意した以外に、
ユーザーがつくった解析スクリプトを登録できたらいいなと考えています。
中に危険なコードをまぜることができるので、
制限したいのですが、
どうしたものかなと考えていたところです。
このサイトではどうしているのか興味があるところです。

つついてみた感じでは * ファイルシステムの自作 * 危険そうなメソッドの再定義 * ENV などの無効化

くらいではないでしょうか。
いっそ、_why に聞いてみてはどうでしょうか?

上記の制限のために、
ためしでこんなものをつくってみました。
こちらが許可したクラス(またはそのメソッド)しか実行できないというものです。
ちょこちょこっと書いたので穴があるかもしれません。

面白いのですが、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

で、もともと動機に遡って考えてみるに、
たぶん、webサービスはイヤだから、druby とかもっとカジュアルな
実行環境の提供をしたいということなのでしょうが、
管理された実行環境の生成はインタプリタインスタンスを
言語が用意してくれない限りできなさそうだというのが僕の印象です。
ささださんにそういうのをねだりまくるというのはあるかもしれません。
自分たちで出来る解としては機能はwebサービスで提供して
クライアントサイドに対してそのサービス用の ruby バインディングを
用意するというのがひとつの落としどころのような気がします。


ごとけん