0

いくつかのコンボボックス、グリッド、およびグリッドを更新するためのボタンを含む JSP ページがあります。ユーザーが更新ボタンを押すたびに、JSP ページはサーブレットを呼び出し、クエリを実行し、コンボボックスの値に基づいて新しく取得したデータでグリッドを更新します。

だからJavascriptでは、これは多かれ少なかれ私がやっていることです:

<script>
    function getSRCHGTData() {
        $.get('api/ServletTest', function(data) {
            alert(data);
        });

        var comboBox = $("#cb_cus_cd").data("kendoComboBox");

        var grid = $("#grid_SRCHGT").data("kendoGrid");
        grid.dataSource.transport.options.read.url = "api/srchgt_read?cus_cd=" + comboBox.value();

        grid.dataSource.read();
        grid.refresh();
    }
</script> 

サーブレットの URL を簡単に調べて SQL インジェクションを実行できるため、そのようなパラメーターを渡すことはまったく安全ではないようです。

通話をより安全にするにはどうすればよいですか?

編集:詳細:サーブレットは、データベースにクエリを実行する前に、入力の検証をすでに行っています(入力のサニタイズ、ステートメントの準備など)。私がもっと心配しているのは、URL を介してサーブレットを呼び出すときにパラメーターを公開していることです (たとえば、以下から cus_cd パラメーターを見ることができます)。

4

3 に答える 3

1

ここでは、SQL インジェクションは問題になりません。これは、データベース層で回避できます。PreparedStatementつまり、SQL インジェクション攻撃を回避するために利用できるということです。

Java での SQL インジェクションの防止をご覧ください。

于 2013-03-15T03:32:37.813 に答える
1

ユーザーはいつでも呼び出しを傍受できるため、呼び出しをより安全にしようとするべきではありません。サービス自体が安全であることを確認する必要があります。(つまり、適切な認証、承認があり、入力を適切にサニタイズします。)

于 2013-03-15T03:35:20.953 に答える
0

Do-Not-Rely と Trust-on-Client-Side-Validationを伝えるだけです。

すべてのサーブレットをフィルターに通し、適切な認証が存在するかどうかを確認することを常にお勧めします。

于 2013-03-15T06:14:52.523 に答える