jqGrid(&Rails)を用いて、DBに対しての情報登録・取得を行っています
XSS対策を行う為、以下のサイトを参考に
autoencodeオプション=true を設定しました。
jqGridのwiki「Options」
しかし、こちらのオプションではエスケープが望ましくないタイミングで行われてしまいます。
希望しているのは、DBから取得した値をjqGridに表示する段階のみエスケープする事です。
DBに登録する段階ではエスケープして欲しくなかったのですが、
上記オプションでは登録時もエスケープしてしまいます。
結果、以下の事象が発生してしまいます。
- 入力欄で入力した値とは異なる(エスケープ処理が施された)値が登録されてしまう
- 登録時点でエスケープをされてしまっている為、DBから取得しなおして表示するとエスケープ処理の文字列がそのまま表示されてしまう(当たり前ですが……)
(例)
- 入力値=「test<font color="red">red</font>」
- DBに登録される値=「test<font color="red">red</font>」
- ページ描写時の表示=「test<font color="red">red</font>」
.
【お尋ねしたい事】jqGridで、表示する段階のみエスケープするには、どうすれば良いでしょうか。
(autoencodeオプションの使い方が間違っているのでしょうか。または、こちらのオプションでは絶対望み通りにはならず、どこか別の箇所をカスタマイズしなければならないのでしょうか。)
※ちなみに、jqGridを埋め込んでいるJS内でのみ対処したい為、現状サーバサイドでの対処は考えていません…
.
何卒、よろしく御願いいたします。
あなたの回答
tips
プレビュー