質問: 私はこれまで何も意識せずに、ユーザに入力された文字列を出力するときにはサーバ側でエスケープ処理をしていました。漠然とこれによって文字列を変換して無害な形にしているのだろうと考えていました。 しかし、あるときエスケープ処理した後の文字列をテキストエリアに出力し、それをそのままサーバに送らせて、その元々の文字列と照合する機会があり、結果としてはエスケープされて出力されたものは元々の文字列と等値だと出ました。 (例えば元々『』の文字列がhtml上では『<a>』と出力され(表示はのまま)それをそのままサーバに送らせて照合したら一致するといった感じ) 単純な変換ならば文字列が変わるはずだし、変換されないなら特殊文字として機能するはずだしと、現在こんがらがった状態で調べています。 これは見えないところではどういう原理で動いてこうなっているのでしょうか?
回答: > > (例えば元々『』の文字列がhtml上では『<a>』と出力され(表示はのまま)それをそのままサーバに送らせて照合したら一致するといった感じ) > > > それは、ブラウザがエスケープから戻しています。**属性値にもエスケープは必要**なので、HTML上に``とあった場合、入力ボックスには``と出て、送信すればやはり``という値になります。