[#49861] テンプレートシステムを安全に使う — "5.5" <5.5@...>
5.5 です。
5p2+5bC+44Gn44GZ44CCDQoNCuaVsOW5tOWJjeOBq+WQjOOBmOOCiOOBhuOBquWxgOmdouOBjOOB
[#49868] Rubyへの要望(願望) — MASAKI Yuhsuke <reasonset@...>
Ruby list=E3=81=AE=E7=9A=86=E6=A7=98=E3=80=81=E3=81=AF=E3=81=98=E3=82=81=E3=
まつもと ゆきひろです
[#49877] Rubyリファレンス chm版リミックス更新(2014年7月版) — Dice <tetradice@...>
44GT44KT44Gr44Gh44Gv44CCRGljZeOBp+OBmeOAgg0KDQpSdWJ544Oq44OV44Kh44Os44Oz44K5
西山和広です。
6KW/5bGx5ZKM5bqD44GV44KTDQoNCkRpY2XjgafjgZnjgIINCuOBmeOBv+OBvuOBm+OCk+OAgeOD
西山和広です。
RGljZeOBp+OBmeOAgg0KDQo+IENobUZveCDjgafjgoLjgYbjgaHjgofjgaPjgajplrLopqfjgZfj
RGljZeOBp+OBmeOAgg0KDQrvvJ7opb/lsbHlkozluoPjgZXjgpMNCuWFiOaXpeOBlOWgseWRiuOB
西山和広です。
西山和広です。
RGljZeOBp+OBmeOAgg0K44GZ44G/44G+44Gb44KT44CB6L+U5L+h44GM6YGF44GP44Gq44KK44G+
RGljZeOBp+OBmeOAgg0KDQrjgYLjga7lvozjgYTjgo3jgYTjgo3oqabjgZfjgabjgb/jgZ/jga7j
西山和広です。
RGljZeOBp+OBmeOAgg0KDQo+IENobUZveCDjgpLlhaXjgozjgabjgb/jgovjga7jga/jgZ3jgpPj
RGljZeOBp+OBmeOAgg0KDQrlhYjpgLHjgYroqbHjgZfjgZfjgabjgYTjgZ8NCuOAjG5vZGUtd2Vi
西山和広です。
RGljZeOBp+OBmeOAgg0KDQrlv6voq77jgYTjgZ/jgaDjgY3jgYLjgorjgYzjgajjgYbjgZTjgZbj
西山和広です。
RGljZeOBp+OBmeOAgg0KDQrjgZTmhI/opovjg7vjgZTopoHmnJvjgYLjgorjgYzjgajjgYbjgZTj
[ruby-list:49863] Re: テンプレートシステムを安全に使う
5.5 です。
松尾さん,ご教示ありがとうございます。
(14/07/07 13:48), Aiga Matsuo wrote:
> 松尾です。
>
> 数年前に同じような局面があって、Rubyのsafe levelを利用したことがあります。
Ruby のセーフレベルって,こういうふうに使えるんですね!
たしか,Ruby を知り始めた頃,アスキーの『オブジェクト指向スクリプト
言語 Ruby』で読んでみたんですが,チンプンカンプンでした。
(本が悪いのでなく,読んで分かる素地が当時無かったのでしょう)
> エッセンスとしては下記のようなコードを書きました。。
>
> require 'erb'
>
> @erb = ERB.new('<%= IO.read("/etc/passwd") %>')
>
> Thread.start do
> $SAFE = 3
> print @erb.result(binding) # => SecurityError
> end.join
これはとても分かりやすいですね。このサンプルと,るりまの解説を読ん
で,ようやく分かってきました。
Thread.start を使っているのは,セーフレベルの変更を局所化するため
なのですね。
> 最近のRubyだと$SAFE=4がobsoleteになったので3にしていますがsandboxとして
> それなりに動作します。
> $SAFE=4がなぜ排除されたのかあたりの事情を知らないのでこの辺りは突っ込ん
> で調べておいたほうが良さそうですが。
そうですね。
結局,$SAFE=0, 1 は何となく分かりましたが,2, 3, 4 はよく分かりま
せんでした。
ruby-list の過去メールを見ても,3 は 4 を用意するためにあるという
ようなことが書かれていて,それでなぜ 4 だけ廃止するのかなと思った
り。
--
5.5@moji.gr.jp