2009-08-04 12 views
0

ストアドプロシージャを使用してSQLデータベースにデータを挿入するためのベストプラクティスパターンに従う人がいるかどうかは疑問でした。つまり、検証済みのデータをストアドプロシージャに渡すためにはどのような手順を取るべきですか。asp.netでストアドプロシージャを使用してデータを挿入するベストプラクティス

+0

私はあなたの質問を理解していません。明らかな答えは、「使用する前にデータを検証する」ですが、それはあまりにも明白な意味です。どうか明らかにしてください。 –

+0

データは取得時に検証されていないのですか? – Martin

+0

いいえ私は、サイズとデータ型について、データを検証しています。しかし、ハッカーがJavaScriptコードやSQLコードを追加しようとするとどうなりますか?どうすればこれらのものを罠に入れることができますか さらに、このステートメントをパラメータの入力に使用するだけでもかまいません。 cm.Parameters.AddWithValue( "@ UserID"、TxtID.Text.ToString()); 私はちょうどこれらのもののための良い練習パターンがあるかどうかを知りたいと思っていました。 – Mohit

答えて

1

ORMを使用しているのか、直接データベースアクセスを使用しているのかによって、これを行うさまざまな方法があります。 1つは、SPパラメータを作成するためにSqlParameterオブジェクトを使用する必要があることです。私はあなたが上の層でストアドプロシージャの実装を検証のための任意のロジックを埋め込むことをお勧めがあり、さまざまなオプションを備えたSqlParameterを作成するためのさまざまな方法がありますが、最も簡単な形式は

SqlParameter[] prms = new SqlParameter[1]; 
prms[0] = new SqlParameter("@userid", "Bob"); 
+0

しかし、JavaScriptやSQLコードをテキストボックスに渡すと、JavaScriptやSQLコードをトラップできますか? たとえば、ユーザーに電子メールメッセージを書くことを許可しています。メールを送信する前に、そのメッセージもdbに保存しています。しかし、ユーザー/ハッカーがSQLで完全に機能するコードを書いて、自分のサイトをハックしたり、データを破損したりすることは望ましくありません。私はSQLのパラメータを使用していますが、それは安全ですか? – Mohit

+1

パラメータを使用すると、ハッカーはSQLインジェクションを実行できません。 –

+0

コディーCさんから与えられた声明が私にとっては十分であるとか、他にも何かをする必要があるのですか? – Mohit

2

です。このようにして、実装と公開にもっと柔軟に対応できます。簡単な例として、検証ライブラリを複数のプロジェクトに再利用することができます。ほとんどのORMライブラリは、コンパイル時に適切な型の割り当てを検証することで、最も単純な形式で検証をサポートします。

より上のトランザクションロジックをストアドプロシージャに実装することをお勧めします。

+0

良いORMライブラリがあれば教えてください。 – Mohit

+0

私は本当に、本当にSubSonic [http://subsonicproject.com/Download]を見つけます。私は2.2で楽しい経験がありましたが、まだ新しくリリースされた3.0を使用していません。 – t3rse

関連する問題