概要
Object#untaint -> self
詳細
オブジェクトの汚染マークを除去する。
セキュリティレベルについては下記参照。
http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fsafelevel.html
サンプルコード
require 'tbpgr_utils' name = ARGV[0] age = ARGV[1] Person = Struct.new(:name, :age) tanaka = Person.new('tanaka', 24) yogore = Person.new(name, age) bulk_puts_eval binding, <<-EOS tanaka.name.tainted? tanaka.name.taint tanaka.name.tainted? tanaka.name.untaint tanaka.name.tainted? yogore.name.tainted? yogore.name.taint EOS $SAFE = 1 # 汚染された文字列でディレクトリ操作をしようとしてセキュリティエラーが発生 Dir.mkdir(yogore.name) unless Dir.exist?(yogore.name) __END__ 下記はTbpgrUtils gemの機能 bulk_puts_eval https://rubygems.org/gems/tbpgr_utils https://github.com/tbpgr/tbpgr_utils
出力
$ ruby object_taint.rb yogore 99 tanaka.name.tainted? # => false tanaka.name.taint # => "tanaka" tanaka.name.tainted? # => true tanaka.name.untaint # => "tanaka" tanaka.name.tainted? # => false yogore.name.tainted? # => true yogore.name.taint # => "yogore" object_taint.rb:21:in `exist?': Insecure operation - exist? (SecurityError) from object_taint.rb:21:in `<main>'