0

プリペアドステートメントやパラメータ化されたクエリなどのクエリを実行するための最も安全な方法を使用してSQLインジェクション攻撃を防ぐ場合、実行中にデータベースエラーが発生しないという保証はありますか?たとえば、レコードの挿入時に特定のタイプに無効なパラメータを送信すると、デフォルト値を使用する代わりにエラーが発生します。例を挙げてもらえますか?

4

3 に答える 3

0

これは使用しているデータベースによって異なりますが、一般的に、タイプなどに応じて行われる変換は暗黙的であることが多いため、実行時に失敗する可能性のある文字列を渡して適切な値に変換することができます。

SQLインジェクション攻撃に関する限り、動的に呼び出すSQLがパラメータに含まれていることを期待しない限り、安全です。

于 2012-02-05T14:26:18.203 に答える
0

ランタイムエラー(他に何もない場合は「トリガー」と考えてください)が発生するという保証はありません。

于 2012-02-05T14:26:53.270 に答える
0

パラメータ化されたクエリがデータベースエラーを防止しない1つの例は、50文字に制限されたユーザー名フィールドの100,000語のエッセイなど、データベースタイプに収まらない限り、ユーザーが入力を提供できる場合です。

また、パラメータ化されたクエリは、重複する主キーエラーから保護しません。たとえば、登録フォームで要求するユーザー名がすでに使用されている場合です。

パラメータ化されたクエリは、値がSQLとして解釈されないことを保証するだけであり、の形式のエラー(データベースのディスク領域が不足しているためにSQLステートメントが失敗するなど)を防ぐことはできません。

于 2012-02-05T14:28:33.453 に答える