2010-12-08 13 views
3

最近、私はhtmlエンコードされたデータをデータベースに格納すべきではないことを知りましたが、ユーザーの画面に表示されるデータをhtmlエンコードする必要があります。 大したことではなく、データベースレコードを修正してコードを変更する必要があります。Htmlエンコードの使い方

しかし、私の質問は、いつhtmlエンコードを使用するべきですか?I. たとえば、htmlテーブル内では、データベースから列の内部HTMLに直接書きます。エンコーディングがなければ、これは危険です、私はそれを取得します。

テキストボックスの値を設定するとどうなりますか。値をhtmlでエンコードする必要はありません。しかし、私はなぜそれがわからない。これは、テキストボックスがどのように見えるかです:

<input type="textbox" value="xxx"/> 

しかしに値を設定するとき:"/><p style="font-size: 100px;">testing hack</p> htmlソースは次のようになりますので、P-タグISNを見たとき

<input type="textbox" value=""/><p style="font-size: 100px;">testing hack</p> 

これは、しかし罰金になります「ハック」が意図したとおりに働いています。

私が目指しているものは誰ですか? テキストボックスの値にhtmlエンコードしようとすると、結果は "& lt"と表示されます。これは意図したとおりではありません。

要するに、html-controlsのinnerHtmlに設定されているものだけをhtmlエンコードする必要がありますか?例えば、テキストボックスの値を設定するときは設定しないでください。

<input type="textbox" value="xxx"/>

の場合

+0

IEを使用してテストしていますか? IEは、ドキュメントに表示されている場合、サーバーに送信したデータをエスケープすることがあります。 – thejh

+0

いいえ、Chromeでテストしています。 – Andreas

+0

@アンドレアス:ソースコード(STRG + U)を見たことがありますか、開発者ツールの「要素」タブで見たことがありますか? – thejh

答えて

3

答えは、この質問へのコメントで、thejhと私の議論から出てきました。私は答えとして何をマークするか分からなかったので、自分の質問に答えることにしました。それが大丈夫だと思う。

属性の値(テキストボックスの「値」など)を設定すると、.NETが自動的に値をエンコードするので、自分でこれを行う必要はありません。

HTMLを設定するときに内部HTMLを制御する場合は、値をhtmlエンコードすることが重要です。

ありがとうThejh、申し訳ありませんが、あなたが書いたものは何も投票できませんでした。

編集:これをもう2日間の回答としてマークすることはできません。

1

は、 'XXX' は属性であり、あなたは別のエンコーディングを使用する必要があります。 ASP.NETでは、例えばHtmlAttributeEncodeです。

1

HTML属性の場合は、バックスラッシュと二重引用符をエンコードします。

  1. あらゆる\方法により、すべての"

\"によってああ、置き換え
  • \\によって置き換え:時々PHPがあなたのためにこれを行い、 hereを参照。

    この機能は、PHP 5.3.0以降では廃止されました。この機能に依存することはお勧めできません。

    関連する問題