1

基本的な質問。ユーザーに名前、電子メール、およびコメントを求めるフォームがあり、そのエントリをデータベースに保存するとします。次のような SQL クエリを入力するとどうなりますか。

DROP tablename

コメント欄で。

@Name,
@Email,
@Comments

INSERT INTO mytable (Name, Email, Comments) VALUES (@Name, @Email, @Comments)

SQL インジェクションのリスクはありますか、それとも完全に安全ですか?

挿入を処理する SQL Server 2008 ストアド プロシージャ。

4

3 に答える 3

5

はい、安全です。

SQL インジェクションは、悪意のある入力を補間して SQL クエリの構文を変更することで機能します。

ただし、1 つのクエリ パラメータは常に1 つのスカラー値を置き換えます。パラメータを使用する場合、悪意のある入力によってクエリの構文が変更されることはありません。

于 2013-07-17T02:12:12.347 に答える
0

あなたの質問に対する簡単な答えは、パラメーターを使用すれば安全です。

(以下のコメントは元の質問の範囲から少し外れていますが、このトピックについて詳しく学ぶために時間を割くことを強くお勧めします)

ただし、これは、ユーザー入力を何らかの方法で検証してはならないという意味ではありません。SQL インジェクションから保護されていても、ユーザー入力の検証に失敗すると、人々が挿入するほぼすべてのものでデータが汚れる可能性があります。

また、セキュリティをさらに向上させるために、最小限の権限を持つアカウントを使用していることを確認してください。

これは、MSDN のこのトピックに関する優れた記事です。

于 2013-07-17T09:12:59.060 に答える
0

パラメータオブジェクトを使用できます。SQL インジェクションを制限できます。インライン SQL を使用しないでください。SQL インラインを使用する場合は、パラメーター内の単一引用符 ("'") を確認してください。

于 2013-07-17T02:11:42.597 に答える