3

Rubyでは、補間を使用して文字列に追加されたデータが文字列を終了できる方法はありますか? たとえば、次のようなものです。

"This remains#{\somekindofmagic} and this does not" # => "This remains"

私はそうではないと仮定していますが、次のようなことを確実にしたいです

something.send("#{untrusted_input}=", more_untrusted_input)

実際には、補間された文字列を終了して eval を送信するために使用できる方法を残していません。

4

2 に答える 2

2

Ruby の文字列は、内部的にはヒープ上のバイト配列と、文字列の長さを保持する整数として扱われます。したがって、C では NUL バイト ( \0) が文字列を終了しますが、これは Ruby では起こりません。

ルビ文字列の内部に関する詳細はこちら: http://patshaughnessy.net/2012/1/4/never-create-ruby-strings-longer-than-23-charactersルビー 1.9)。

于 2013-05-25T21:14:07.183 に答える