永井@知能.九工大です. From: TADA Tadashi <sho / spc.gr.jp> Subject: [ruby-dev:21646] Re: access ENV on $SAFE==4 Date: Mon, 20 Oct 2003 19:35:35 +0900 Message-ID: <20031020192816.74C3.SHO / spc.gr.jp> > 「これら」というのは、元メールにあった: > > > ENV > > RUBY_PLATFORM (PLATFORM) > > $LOAD_PATH ($:, $-I) > > すべてのことを指していますよね? (snip) > CGIの場合、ENV経由でリモートホストの情報が渡されてくるので、これが使えな > いとかなり不自由になります。「(動作している)マシン環境に関する情報」をつ > ぶすのは賛成ですが、それ以外の情報は取れても良いと思います。 ということは,RUBY_PLATFORM, $LOAD_PATH については つぶすのに賛成ということですね. ENV については一切アクセス不可は困るが, 必要以外の情報についてはつぶすのに賛成と理解しました. そうしますと,次の方針が考えられると思います. (1) アクセス可能なものをあらかじめ指定しておく. ライブラリで必要とされる最低限に絞れる代りに,必要な物が増える 度に対応しなければならないのが問題.ライブラリの問題に core が 引き摺られる恐れが大きい. (2) $SAFE < 4 において指定された情報にのみアクセスが許可される. 最も妥当な線か? ただしライブラリ側の対応が必要となるため,マイ ナーバージョンアップのレベルで導入するには大きすぎる変更かも. (3) マシン環境に関する情報を含むものをリストアップしてそれらをつぶし た上で,ENV.keys の実行を禁止する. ライブラリ側の対応が不要であるので導入は容易.ただし,危険な情 報をつぶしきれているかの不安を消せないのが問題.もしかすると, こちらが把握していないアプリケーションの環境変数をスキャンされ て,そこから探りを入れられてしまうかも. 多分 (1) は無茶なので,私としては (2) が望ましいと思うのですが, とりあえず (3) とした上で将来の (2) を予告し,1.9 などで移行と いう戦略もありでしょう. もちろん,「(3) は中途半端だから,次のメジャーバージョンアップ までは放置」という選択も考えられます. どう思われますでしょうか? # preview で (2) に変更しちゃって文句を待つとか.(^_^) -- 永井 秀利 (九工大 知能情報) nagai / ai.kyutech.ac.jp