0

Web アプリケーションを構築していて、ユーザーがレコードをデータベースに挿入できるようにしたいと考えています。私が見つけた方法は、テキスト ボックスから情報を取得して、次のコードを実行することです。

SqlDataSource1.InsertParameters["ProductCode"].DefaultValue = txtProductCode.Text;
SqlDataSource1.InsertParameters["Name"].DefaultValue = txtName.Text;
SqlDataSource1.InsertParameters["Version"].DefaultValue = txtVersion.Text;
SqlDataSource1.InsertParameters["ReleaseDate"].DefaultValue = txtReleaseDate.Text;
try
{
    SQLDataSource1.Insert();
}
...

SQL を注入しようとすると、次のエラー メッセージが表示されます。

メッセージ: 文字列またはバイナリ データは切り捨てられます。ステートメントは終了されました。

このメソッドはパラメータをサニタイズしますか? このエラーを回避する方法がまだあるかどうかわからないため、この情報を見つけるのに苦労しています。そうでない場合、入力をサニタイズするにはどうすればよいですか?

さらに、ReleaseDate パラメーターは現在 dd/MM/yyyy として読み取られているようですが、これをロックして、別のシステムで同じコードが異なる動作をしないようにする方法はありますか。地域設定が異なるシステムでコードを実行すると、異なる形式が使用されるのではないかと心配しています。

4

1 に答える 1

0

テーブル内のフィールドの 1 つが、値を挿入するのに十分な長さではありません。ProductionCode、name、Version、ReleaseDate のそれぞれの長さを確認し、それに応じて増やす必要があります。

http://msdn.microsoft.com/en-us/library/aa196741(v=sql.80).aspx

于 2013-01-26T02:53:31.667 に答える