> 2003/12/09 (火) 16:11:51 ◆ ▼ ◇ [mirai]> > user_input_value = '#{1+2}'
> > p "#{user_input_value}" # => "#{1+2}"
> > やっぱユーザのインプットはコードとしては解釈されないっぽいが(;´Д`)
> erubyや<%...%>ってのがどうしてるのか知らないけど#{1+2}とかが展開されるのは
> パーサーがソースをパースするときか明示的にパースするメソッドを呼んだときだけだと思うよ
> よくわからんが../../../../etc/passwdこういう入力をチェックしてなかったってことじゃないかな?
「p "aa#{1+2}bb"」というソースをパースする時に内部的に
「p "aa" + (1+2) + "bb"」に書きかえるようなイメージだな
だから外部から#{1+2}みたいな文字列が入って来たとしてもevalでも
しない限り1+2がコードとして処理される事は無いはずなんだが(;´Д`)
元の記事では一体どんな処理をしてやがったんだ
参考:2003/12/09(火)16時07分10秒