Rubyリファレンス: Home

tainted? (Object)

Edit   History

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

obj.tainted?

tainted?メソッドは、オブジェクトが汚染されていればtrue、そうでなければfalseを返します。オブジェクトを汚染状態にするには、taintメソッドを使います。

次の例では、文字列s1taintメソッドで汚染しています。s1だけでなく、s1を元に作ったs3も汚染状態になることが分かります。

s1 = "hello"
s1.taint
s2 = "world"
s3 = s1.upcase
 
p s1.tainted?
p s2.tainted?
p s3.tainted?
true
false
true

オブジェクトには、Rubyによって自動的に汚染されるものもあります。次の例は、コマンドライン引数の汚染状態を調べます。

if ARGV[0].tainted?
  puts ARGV[0].inspect + " is tainted."
end

コマンドライン引数を付けて実行してみましょう。

> ruby tainted.rb hello

コマンドライン引数はデフォルトで汚染状態になることが分かります。

"hello" is tainted.

関連項目