3

文字列を挿入するときにチェックしてエスケープする必要がある文字は何ですか?

INSERT INTO gamedata (gamename, url, dlink) 
VALUES ('mady's run', 'http://www.sdfa.com', 'http://extabit.com/sdf')</code>

これらの文字をエスケープするにはどうすればよいですか?
私は C# を使用しており、SQL Server Management Studio 2008 でデータベースを管理しています。

4

1 に答える 1

22

それらをエスケープしないでください。SQL に値を含めないでください。代わりに、パラメータ化された SQLを使用して、パラメータの値を直接指定してください。エスケープ、引用符、変換は不要で、SQL インジェクション攻撃のリスクもありません。

例については、ドキュメントをSqlCommand.Parameters参照してください。

これは、「特殊な」文字を持つと予想される値だけでなく、すべての値に適用する必要があります。コード (SQL) をデータ (値) から分離し、SQL インジェクション攻撃を回避し、不要な変換も回避します (注意しないと、日付/時刻の値と数値に実際に問題を引き起こす可能性があります)。

于 2012-12-23T22:03:35.193 に答える