2011-04-19 5 views
0

私はWYSIWYGを使用してユーザーがテキストを書式設定できるようにしています。ColdFusion - フォームPOSTでURLDecodeが必要ですか?/URLDecodeは1文字をランダムに削除します

<p><span style="line-height: 115%">This text starts with a 'T'</span></p> 

エラーがあるという点で、「T」、「この」、または最初の文字があることを起こるものは何でも、ランダムURLDecodeを使用してDBに保存するときに除去される。これは、エラーの原因となるテキストです。サーバー側でURLDecodeを削除すると、負の副作用(DBには同じ情報が含まれています)がなくても修正されるようです。

documentation

はHTTPで

クエリ文字列は、常にURLエンコードされていることを述べています。

これは本当ですか?もしそうなら、なぜURLDecodeを削除してもすべてがうまくいかないように見えますか?

ので、2つの質問:

  1. なぜURLDecodeは、(ライン-heightプロパティが存在する場合にのみ起こるようです)このように、除去すべき最初のテキスト文字を引き起こしていますか?
  2. POSTされたデータをデータベースに入れる前にURLDecodeを使用する必要が本当に必要ですか?

編集:デコードされたテキストをエコーバックするためのテストページを作成しましたが、URLDecodeはその文字を確実に削除していますが、理由はわかりません。

答えて

1

formスコープが設定されていると、自動的にデコードが行われると思います。そのため、%(この文字はエンコードに使用されます)以降の文字は削除されます。文字列をもう一度デコードしようとしています。

セキュリティ上の理由から、scriptタグを削除したり、ホワイトリストを使用してHTMLをクリーンアップしたりすることもできます。該当する機能については、CFLib.orgを検索してください。

+0

OKです。私は別のテストを行い、 '%'> Th 'は' $ '> h'に行きます。これはCFの部分のバグと見なされますか?私はそれが無効な構文だと思いますが、この状態での動作は不安定に思えます。いずれにせよ、 'form'スコープに関する情報をありがとう。 – jtpereyda

+0

エンコーディングでは、16進で値をエンコードするために%記号が使用されます。 %20はスペースです。だからあなたはURLDecodeが何% "> Thの意味であるかを調べようとしています。この場合、奇妙な結果に終ります。 – Salsero69

関連する問題