アカウントに関連付けられた請求日を検索するために、ユーザーがアカウント ID (正確に 8 桁である必要があります) を指定する Web サイトを設計しています。ユーザーが文字を入力できないようにするために、asp.net正規表現バリデーターを使用しました。また、このテキスト ボックスに必須フィールド バリデータを添付しました。
他のstackoverflowの質問からSQLインジェクション攻撃について読んだことがありますが、バリデーターでクエリを保護することに関連するものは何も見つけていません.
これらのバリデータが設定されている場合、SQL インジェクション攻撃について心配する理由はありますか? 悪意のあるユーザーがこのユーザー入力を悪用するのを防ぐために、他に必要な (またはすべき) ことはありますか?
以下は、SQL クエリの C# コードで、AccountID に関連付けられた請求サイクルの日付をドロップダウン リストに入力します。
string sqlCommandString = "SELECT StatementDate AS StateDate FROM dbTable " +
"WHERE AccountID = '" + AccountID + "' ORDER BY StatementDate DESC";
string ConnectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection sqlConnection = new SqlConnection(ConnectionString))
using (SqlCommand sqlCommand = new SqlCommand(sqlCommandString, sqlConnection))
{
sqlConnection.Open();
DropDownList_StatementDate.DataSource = sqlCommand.ExecuteReader();
DropDownList_StatementDate.DataBind();
}
そして、これが私が使用した正規表現バリデータです:
<asp:RegularExpressionValidator
ID="RegExpVal_AccountID"
runat="server"
ErrorMessage="Must be 8 digits"
ValidationExpression="^\d{8}$"
ControlToValidate="TextBox_AccountID"
CssClass="ValidatorStyle"
Display="Dynamic">
</asp:RegularExpressionValidator>
ありがとうございました。