0

ASP.NETアプリケーションを開発しましたが、侵入テストで次のエラーが報告されました

アプリケーションで不適切なエラー処理が観察されます。アプリケーションは、SQLクエリの実行中にテーブル名や列名などのデータベースの詳細を開示します。この脆弱性は、パラメータ「txtCity」が空白のままでフォームが送信された場合に特定されます。

データベースの詳細は、次のエラーで開示されています。

値NULLを列'column_name'、テーブル'table_name'に挿入できません。列はnullを許可しません。INSERTは失敗します。ステートメントは終了されました。"

sqlステートメントはストアドプロシージャとして実行されます。ウェブページにエラーを再現することはできませんが、フォームを送信しようとしています。問題の解決にご協力ください。あなたの助けは大歓迎です。

4

2 に答える 2

1

ペネトレーションテスターは、フォームがどのように送信されたかを確認し、フロントエンドでの検証を無視して手動で再送信します。

これは、さまざまな方法で実行できます。たとえば、Burp Proxyなどを使用してブラウザとサイト間のリクエストを監視したり、ブラウザの開発者ツールで簡単に調べたりすると、フォーム送信エンドポイントの場所、取得するパラメータ、使用した送信方法がわかります。次に、攻撃者は、自分が持っているツールを使用して、必要なデータをフォームエンドポイントに送信できます。

重要なのは、フォーム送信ページにパラメータ値を送信するために、Webページによって提供されるすべてのフロントエンドセキュリティを非常に簡単にバイパスできることです。したがって、バックエンドのセキュリティを考慮する必要があります。Webページのフロントエンドコードの「セキュリティ」に依存しないでください。フロントエンド検証コードは、正当なユーザーに支援を提供するためのものです。

フロントエンドに表示されるSQLエラーを停止することで一般的なケースを解決できます。または、この特定のケースでは、サーバーコードで、これらのパラメーターに基づいてデータベースでSQLクエリを実行する前に、すべてのフォームパラメーターが有効であることを確認できます。 。

于 2012-11-19T08:53:33.443 に答える
0

次のような Web 構成ファイルのユーザー カスタム エラー

 <system.web>
    <customErrors mode="Off">
        <error statusCode="404" redirect="Templates/PageNotFound.html" />
         ...
         ...
    </customErrors>
 <system.web>

その後、カスタムエラーは表示されません。また、Global ファイルを使用して、アプリケーションで発生したエラーを追跡することもできます。

void Application_Error(object sender, EventArgs e)
{
}

java-script とコード ビハインドからtxtCityを入力する前に、テキスト ボックスを検証します。
その理由は、テスト チームによってjava-script が無効にされている可能性があります。そのため、Java スクリプトの検証が機能していません。
そのため、使用している C# または vb のテキストを検証します。

于 2012-11-19T08:50:37.667 に答える