ASP.NET は、クライアントとサーバー間のデータ操作を禁止するメカニズムを使用していますか?
そうでない場合、SSL を使用する必要があるということですか? SSL はどのような種類の攻撃を防ぐことができますか?
はいの場合、このメカニズムは何ですか?
ASP.NET は、クライアントとサーバー間のデータ操作を禁止するメカニズムを使用していますか?
そうでない場合、SSL を使用する必要があるということですか? SSL はどのような種類の攻撃を防ぐことができますか?
はいの場合、このメカニズムは何ですか?
いいえ、ASP.NET WebフォームとMVCフレームワークは、クライアントとサーバー間のデータの転送を保護するために何もしません。ビューステートはWebフォーム内の暗号化されたデータですが、サーバーまたはクライアントに向かう途中で改ざんできないという意味ではありません。簡単な答えは、中間者攻撃を防ぎたい場合は、CA署名付き証明書を使用して少なくとも128ビットのSSLを使用することです。
ASP.Netは、クライアント側でViewstateを使用して値を保持します。これは、実質的に壊れることはありません。ただし、Webアプリケーションは、TCP / IPプロトコルを使用してパケットデータのチャンクで渡されるwebbrowserを介してデータをサーバーに渡します(投稿します)。この情報は、一部のソフトウェアを使用して簡単に監視し、送信されているデータを確認できます(ただし、サーバーへの送信中にこのデータを変更することは、リアルタイムでは非常に難しいようです)。SSLは、ブラウザがサーバーに送信する前に、データ(ログインボックスに入力したユーザー名とパスワードなど)を暗号化するだけです。TCP / IPチャネルで送信されているこのデータは監視できますが、暗号化された形式になります。したがって、安全です。
ただし、次のリンクのポイントに注意することで、アプリケーションを安全にすることができます。
クライアントとサーバー間のデータ操作を禁止するには、サーバーがそのような操作を検出する方法が必要です。ビューステートの場合、ビューステートで Mac と暗号化が有効になっていることを確認することで、asp.net でこれを有効にすることができます。ああ、viewstateuserkey も設定する必要があります。
ただし、他のパラメーターについては、攻撃者がパラメーターを操作できます。そのため、SSL/TLS を使用してください。SSL/TLS は、クライアントとサーバー間に暗号化された接続を設定し、攻撃者がデータを傍受したり、コンテンツを操作したりすることを (構成が不十分でない限り) 不可能にします。
SSL/TLS を使用しないため、あらゆる種類の攻撃が可能になります (オープン ワイヤレス ネットワークでのセッション Cookie のスニッフィング、パケットの挿入、返された Web ページの操作など)。