2017-02-15 6 views
1

なぜこのようなことが起こっているのか理解してください。私のWebアプリケーションは、データベースからアポストロフィを含むテキストを取得して、Webフォームのラベルを使用して表示します。ただし、Webフォームを送信すると、潜在的に危険なエラーが発生しています。C#潜在的に危険なエラー、フォーム送信中のアポストロフィ

私はグーグルでてきた、と私はこの問題の原因の流れを理解することはできませんLabel.Text

にそれを設定する前に、私は値上)(HttpUtility.HtmlDecodeを使用することで、このエラーを解決することができます。

私は「'」

しかし、私は理解できないものです「」のような潜在的なHTMLタグを提出する際に潜在的に危険なエラーが発生し、それはまたのようないくつかのエンコードされた文字をフィルタリングすることを理解:

  1. 文字列の値は、Webフォームに表示されるときに自動的にHTMLエンコードされますか?私のデータベースの値はHTMLでエンコードされていないからです。

  2. データベースの値が最初にエンコードされていないと、それを解読するとエラーが解決するのはなぜですか?その場合、データベースからすべての値をデコードする必要がありますか?

答えて

0

私はあなたがこのような何かを探していると思う - >How to allow apostrophe in asp.net website

この問題が発生した主な理由は、それを適切に処理することなく、アポストロフィを受け入れることSQL Injectionにつながる可能性があるという事実に主に起因しています。既定では、マイクロソフトはすべての要求で発生する検証を有効にします。これは通常のページライフサイクルに達する前であっても、フォームにSQLインジェクションやその他の脆弱性を引き起こす可能性のあるものがあるかどうかを確認しますマイクロソフトはすべてのことからあなたを守りますが、少なくとも基本をカバーしてあなたに知らせるようにしています)。最後に、(私の最初のリンクに基づいて)その機能を無効にすることはあなた次第ですが、あなたは適切な方法で自分自身を認識し、保護する必要があります。

あなたの質問には、名前としてencondingは、たとえば、SQLクエリに使用される特殊文字ではなく、適切な文字としてアポストロフィを処理します。そして明らかにシナリオに応じて、それを提示するときにデコードまたはエンコードすることもできます。豊富なHTMLを表示したい場合は、おそらくデコードなどが必要です。

ボトムライン私は最初の段落に戻って、これがいつ始まり、次に何を理解できるかを理解する必要があると思います。

+0

あなたが前に投稿した質問を読んだけど、まだ答えられていない質問があります。私は自分の仕事の性質上、バリデーションを無効にすることはできません。私が理解できないことは、このプロセスのライフサイクルです。特にHTMLのエンコーディングとデコードの部分です。 Webフォームでレンダリングするときにテキストが自動的にHTMLエンコードされていると想定するのは当然ですが、エラーが発生したので、&を引用しましたか? HTMLのテキストをデコードするのが私の問題を解決するのはなぜですか?問題のテキストは、データベースに保存される前にHTMLでエンコードされていませんでした。デコードする前にエンコードする必要はありませんか? – PikaManiac

+0

@ PikaManiac私はあなたが明らかにそれをシナリオに依存するので、エンコードする必要があると言いたくありません。しかし、この特定のシナリオでは、私はあなたがテクスチャを持っているとか、誰かがこれを挿入していると仮定しているので、あなたが必要と思うと思う:「do not」、これをエンコードすると「don &?ブラウザーが理解し、「しない」と表示することができる「t」を入力してください。 このフィドルを見てくださいhttps://jsfiddle.net/b41v18dq/1/ – rjso

関連する問題