2009-07-22 9 views
7

パブリックASP.NET MVC Webサイトを保護するためのガイドラインまたはチェックリストを探しています。私は、Webサイトを展開する際に明らかでよく知られている問題を作成していないことを確認したいだけです。ASP.NET MVCアプリケーションチェックリストを保護する

ありがとうございました。

答えて

5
  1. いつものように、 エンコード出力を必ず適切に作る - エンコードではなく HtmlEncodeを言って、ここで私は だということに気づきます。 のコンテンツをHTMLに出力する場合は、 にHtml.Encodeを使用します。 をJavaScriptに出力する場合は JavaScriptコード を使用します。 - これは、クロスサイトスクリプティング(XSS)
  2. 使用、それはSQLのデータベースの場合は、データストレージにアクセスする方法によっては(多分ちょうどどこでもか)必要なCSRF攻撃
  3. に対して役立つヘルパーに対してお手伝いをします、に覚えていますパラメータ化されたクエリ、ストアドプロシージャ、LINQ、または何を持っているかによって、SQLインジェクションから身を守ることができます。
  4. テストデータに汚れた出力が含まれていることを確認してください(Html.Encodeの呼び出しに失敗した場合、おそらく<script type="text/javascript">alert("XSS attack!");</script>XSS here!によってJavaScriptが注入されます)、
  5. モデルバインディングではホワイトリスト方式を使用しているため、バインドされていないバインダーバインドプロパティをユーザーが作成できません。
+1

私は項目4が好きです。私は、十分な人がこのような種類のテストを行うにはテスターに​​頼っているとは思いません。 – griegs

+0

私はあまりにも、funnily十分これは私が他の人に与えるアドバイスの一部を考える必要があったときに私の心に来たもののようなものです - 私は今これのいくつかの自己反映を行う必要があることがわかります – kastermester

+0

ええ、私はこれらすべてのコメントを見て、まったく同じことをする必要があると考えています。 :) – griegs

1

私は次のようにします。

  1. 私の懸念は別です。 は、ログインすることが必要なことをすべてのアクションに 管理フォルダなど
  2. [オーソライズ]で管理。
  3. Html.Encodeすべてのデータ入力フィールド。
  4. のActionResultを作成します([ID "=を除外する、" バインド(プレフィックス= を "")]に、mymodel newModelObject)< ==が攻撃それ以外

で使用可能なIDを除外...

1

以下に、一般的なASP.NET対策

カスタムエラー
  • 電源を入れますが、暗号化web.configファイルで
    1. 設定デバッグ= falseのクッキー
    2. 検証にすべての入力
    3. 要求の検証を有効にする
    4. 出力を符号化する
  • 1

    絶対に必要な場合を除き、デフォルトでGETを使用しないでください。あなたはそれに[AcceptVerbs(HttpVerbs.Post)]を持っていないDeleteUserアクションを持っている場合たとえば、それは誰「ビュー」の画像によって呼び出されます

    <img src="http://yoursite/admin/DeleteUser/1" /> 
    

    経由で呼び出すことができます。

    +0

    IMOハッカーがimgタグをページに挿入できる場合、削除URLへの投稿を行うJSをJSに挿入することは難しくありません。どう思いますか? – Ramesh

    +0

    はい、あなたは@ griegsのアドバイスに従っており、機密情報も[Authorize]しています。ユーザーがページを表示せずに(ほとんどのアプリに)ログインできるので、[認証]だけでは機能しません。 – swilliams

    +0

    ええと、GET Requestを公開すると、ドメイン全体でクロスドメインXSRFにつながる可能性があります。 – Ramesh

    関連する問題