私はASP.Net C#+ jQuery ajaxウェブサイトプロジェクトに取り組んでいます。私はxss攻撃を防止しようとしており、以下のことは完全なアプローチではないことを知っていますが、これは少なくともユーザーが空き文字列を入力するときにはHtmlEncodeを使用する必要があります。私は本当に正しいことをしているかどうかを親切にチェックする人です。XSS攻撃を防ぐ
ページコントロールの1つが「説明」テキストボックスであり、ユーザーが自社製品の説明に使用する「フリー」文字列を入力できるシナリオがあるとします。 xss攻撃の入力を防ぐために、サーバーサイドのページメソッドでは、HtmlUtility.HtmlEncode()
を使用して「説明」テキストを折り返したので、文字列はデータベースに入る前に純粋なテキストとして解釈されます。つまり<script>
は>script<
になります。
次の部分は、私が疑問に思っていることです - htmlエンコードされたテキストをユーザーに返す前にどう処理するのですか?
ユーザが入力された説明テキストを表示したい場合、ウェブサイトはデータベースから検索し、それを印刷します。
説明にhtmlデコードを実行して、ユーザーにこれらの文字が表示されないようにするのは論理的ですか?><
文字ですか?最初にHtmlEncodeを使用する目的を無効にしますか?そしてもしそうなら、正しいjQuery行をデコードして、ユーザーにテキストを印刷するのですか?
$("#txtDescription").val($(this).html(obj.Description).text();
テキストがデータベースに入るコードしていない非常に非常に多くの
こんにちはKolink、あなたの返信ありがとう:)元のフィルタリングされていない形式でテキストをデータベースに保存する方が良いでしょうが、システムではデータベースに入る前に折り返しが必要になります。ユーザー – user1487182
私たちは奇妙な文字をユーザーに印刷することになっていますか、印刷する前にまず文字を解読するのは通常の習慣ですか?もしそうなら、その部分をどのように扱うのですか?あなたがエンコードしない理由誰かが述べるならばそれが役立つだろうそんなに – user1487182
をありがとう、私は戻って、テキストボックスにこれらの値を印刷する必要があり、それは" > <スクリプト>警告(' XSS ')< /スクリプト>のようなものを示していますテキストはデータベースに入ります...特に答えは5票を上回っています(ページのほとんど)。 – EleventyOne