Rubyリファレンス: Home

taint (Object)

Edit   History

標準クラス・モジュール > Object > taint

obj.taint

taintメソッドは、オブジェクトを汚染状態に変えます。戻り値はレシーバ自身です。

次の例は、セーフレベルを1に上げてコードを実行し、文字列code2taintメソッドで汚染状態にしています。セーフレベル1ではevalの引数が汚染されていると例外SecurityErrorが発生します。

汚染状態とセーフレベルについて詳しくは、セキュリティの説明をご覧ください。

$SAFE = 1
 
begin
  code1 = "puts 'This is untainted'"
  eval(code1)
  
  code2 = "Dangerous"
  code2.taint
  eval(code2)
rescue SecurityError
  p $!
end
This is untainted
#<SecurityError: Insecure operation - eval>

なお、niltruefalse、小さい整数(Fixnum)、シンボル(Symbol)は汚染状態にできません。taintメソッドを実行してもエラーにはなりませんが、tainted?の結果はfalseになります。

セーフレベル

セーフレベルが4のときは、taintメソッドは使えません(例外SecurityErrorが発生します)。

関連項目