7

サービスレイヤーを備えたMVCアプリがあり、すべての入力を狂わずにサニタイズする方法を見つけようとしています。

フィールド長、データ型、およびその他の検証は、クライアントとモデル (EF5) の両方で処理されてい ます

私が今処理しようとしているのは、SQL インジェクションと XSS を防ぐことです。入力の 1 つにマークアップを貼り付けることで、アプリケーションを壊すことができました。

例えば:

 <textarea data-bind="value: aboutMe">@Model.AboutMe </textarea>

AboutMe にスクリプト タグを保存すると、次のようになります。

<script type="text/javascript">alert("hey")</script>

不正な文字による改ページ:

  Uncaught SyntaxError: Unexpected token ILLEGAL 

すべての入力をチェリーピックして、送信されたものからすべてのブラケットを削除するある種の SanitizeText() 関数でラップするだけでよいと考えていますが、これは安っぽくて退屈で、SQL インジェクションに対処していません。

これについての適切な方法は何ですか?

4

2 に答える 2

7

XSS などの問題に対処するには、入力ではなく Html エンコーディングなどを使用して出力を適切にエンコードする必要があります。また、いくつかの優れたクラスを含む抗 xss ライブラリhttp://wpl.codeplex.com/releases/view/80289も参照してください。

SQL インジェクションに関する問題に対処するには、SQL パラメーター (パラメーター化されたクエリ) http://msdn.microsoft.com/en-us/library/vstudio/bb738521(v=vs.100).aspxを使用する必要があります。 SQL サーバー自体。EF5 を使用しているため、SQL インジェクションからも保護されると思います。

于 2013-11-02T22:16:05.387 に答える