- dRubyとはなんですか?
- dRubyはRubyのメソッド呼び出しをネットワーク越しに行なうライブラリです。
- dRubyはどのように通信を保護しますか?
- dRubyのサービスは悪意のあるメソッド呼び出しから保護されますか?
- いいえ。保護されません。dRubyはsandboxを提供しません。
- だれでもメソッドを呼び出せてしまいますか?
- はい、そうです。どのホスト、プロセスもメソッドを呼び出せます。
これは次のように規制できます。
- ACLを使って、呼び出せるホストを規制できます。
- drb-1.3.8では druby://localhost:port のようにlocalhostの
インターフェイスに限定してサービスを提供することができます。
- drb-2ではSSLやUNIXドメインソケットを利用することもできます。
- どんなメソッドでも呼び出せてしまいますか?
- はい、そうです。
Rubyと同様な可視性を提供したいのですが、完全ではありません。
次のように振舞います。
- privateなメソッドは呼び出せない
- protectedなメソッドは呼び出せる。
- 呼ばれたくないメソッドをprivateにすれば安心ですか?
- いいえ。
send, method, extendを使うと任意のメソッドを呼び出せることが
わかっています。他にも方法があるかもしれません。
- evalも呼べてしまうのですか?
- はい、そうです。ただし、$SAFE=1にしたサービスでは、eval系のメソッドは
SecurityError例外となります。この例外はRubyインタプリタが発生させます。