我正在设计一个网站,用户指定一个帐户 ID(必须是 8 位数字),以便查找与该帐户关联的帐单日期。我使用了一个 asp.net 正则表达式验证器来防止用户输入字符。我还在此文本框中附加了一个必填字段验证器。
我已经从其他 stackoverflow 问题中阅读了 SQL 注入攻击,但我没有遇到任何与使用验证器保护查询相关的内容。
设置了这些验证器后,我有什么理由担心 sql 注入攻击吗?我还需要(或应该)做些什么来防止恶意用户滥用此用户输入。
这是我用于 SQL 查询并使用与 AccountID 关联的账单周期日期填充下拉列表的 C# 代码:
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>
谢谢你。