Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@katsumata_ryo

druby: DRb::DRbConnError connection closed のエラーについて

More than 5 years have passed since last update.

はじめに

 drubyとrailsを使用してCentOS内のファイル作成やディレクトリ作成などを行うプログラムを作成していた際に、表題のエラーがでてきて原因が全くつかめなかったためメモを残します。
 

現象

  • rails app => druby 経由 => ファイル作成
  • railsで作成したアプリのフォームから受け取ったパラメータに基づいてファイルの作成をした際にエラーが発生
  • druby: DRb::DRbConnError connection closed
  • FileUtilsやFileクラスのメソッドを使用した際に発生

原因

  • drubyのstart_serviceメソッドに:safe_level => 1 を設定した際に発生
  • railsからもらったパラメータを利用して、作成するディレクトリ等のパスを生成した際にもらったパラメータをいれた変数が汚染されていたため、Fileクラス系の操作を行うことができなかった。

参照:セキュリティモデル(ruby-lang.org)
http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fsafelevel.html

まったく、こちらに思い当たらず見当違いのところを調べまくっていたためえらくハマってしまいました。一緒に調べてくださった先輩に感謝です。

対策

  • :safe_level => 0 にする
    • こちらはとりあえず選択しませんでした
  • エラーが出る元になった変数について、悪意ある内容に書き換えられないようにフィルターするなどして、対象の変数をObject.untaintし汚染を取り除く
    • まだ実装途中ですが、こちらを選択する予定です。

さいごに

エラーの情報がコネクションが切れていることしか見つけられなかったため、エラーの出所をつきとめるのが難しく時間を取られました。
また、Object.taintについて意識をする機会がなかったため楽しいrubyの項目を読み返そうと思います。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
storesjp
インターネットビジネスの企画・開発・運営、マーケティング、プロモーション、コンテンツの企画・制作

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?