3
bash / POSIXシェルで変数を引用するのを忘れた場合のセキュリティへの影響
しばらくunix.stackexchange.comをフォローしている場合はecho $var、Bourne / POSIXシェル(zshは例外)のリストコンテキスト(のように)で変数を引用符で囲まないでおくと、非常に特別な意味があり、正当な理由がない限り、実行しないでください。 ここでいくつかのQ&Aで詳細に議論されています(例:シェルスクリプトが空白または他の特殊文字でチョークするのはなぜですか?、二重引用符が必要なのはいつですか?、シェル変数の展開とグロブと分割の効果、引用符付き引用符なしの文字列展開) これは、70年代後半のBourneシェルの最初のリリース以降のケースであり、Kornシェル(David Kornの最大の後悔の 1つ(質問#7))によって変更されていないかbash、Kornシェルをほとんどコピーしたものです。 POSIX / Unixでどのように指定されているか。 現在、ここにはまだ多くの回答があり、変数が引用されていない公開されているシェルコードもときどき公開されています。あなたは今までに人々が学んだと思っていただろう。 私の経験では、変数を引用するのを省略した人が主に3種類あります。 初心者。確かにそれは完全に直感的でない構文であるため、それらは言い訳することができます。そして、彼らを教育することは、このサイトでの私たちの役割です。 忘れっぽい人。 繰り返しハンマーを打っても納得しない人、Bourneシェルの作者が私たちのすべての変数を引用するつもりはなかったと思う人。 この種の行動に関連するリスクを明らかにすれば、彼らを説得できるかもしれません。 変数の引用を忘れた場合に起こりうる最悪の事態は何ですか。それは本当にそれが悪いですか? ここでどのような脆弱性について話しているのですか? どのような状況で問題になりますか?