リファレンスマニュアルセキュリティモデルセキュリティモデルRubyにはCGI等のプログラミングを安全に行うことを助ける為に、セキュリティ機構が備わっています。Rubyのセキュリティモデルは「オブジェクトの汚染」と「セーフレベル」という仕組みによってなりたっています。オブジェクトの汚染Rubyではオブジェクトは「汚染されている」とみなされることがあります。このしくみは大きく分けて二つの使われ方をします。ひとつ目は、信用できない入力をもとに作られたオブジェクトを「汚染されている」とみなし、「危険な操作」の引数として使えないようにすることです。悪意あるデータによって、プログラムが意図しない動作をする事を防ぐことを目的としています。ひとつは、信用しているオブジェクト(汚染されていないオブジェクト)を信用できないプログラムから守るという使い方です。各スレッドで個別のセーフレベルを設定することはできません。セーフレベルが高くなるほど、行える操作は制限されます。0'原則として、各セキュリティレベルにはそれ以下のセキュリティレベルの制限も適用されます。レベル1で許されない操作はレベル2でも行えません。0デフォルトのセーフレベルです。hogetrue環境変数PATHだけは例外で、値に危険なパスを含む場合のみ汚染されます。ここでは危険なパスとは誰でも変更/書き込みが可能なパスをいいます。ルートディレクトリから階層が順番にチェックされ、一箇所でも誰でも変更可能な個所があればそのパスは危険とみなされます。権限をチェックしません。1信用しているプログラムで信用できないデータを処理する為のレベルです。CGI等でユーザからの入力を処理するのに適しています。