我必须为我的在职培训公司编写一个应用程序管理系统。前端将用 C# 完成,后端将用 SQL 完成。
我以前从未做过这种规模的项目;在学校里我们只学过有关 SQL 的基础课程。不知何故,我们的老师完全没有讨论SQL注入,这是我现在才在网上阅读相关内容才接触到的。
无论如何,我的问题是:如何防止 C# 中的 SQL 注入?我隐约认为可以通过正确屏蔽应用程序的文本字段以使其仅接受指定格式的输入来完成。例如:电子邮件文本框的格式应为“[电子邮件受保护]“。这种方法足够吗?或者 .NET 是否有预定义的方法来处理此类内容?我可以将过滤器应用于文本框,使其仅接受电子邮件地址格式或名称文本框,从而不接受特殊的字符?
通过使用SqlCommand和它的子参数集合所有检查 SQL 注入的痛苦都将由这些类处理。
这是一个示例,摘自上面的一篇文章:
private static void UpdateDemographics(Int32 customerID,
string demoXml, string connectionString)
{
// Update the demographics for a store, which is stored
// in an xml column.
string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
+ "WHERE CustomerID = @ID;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;
// Use AddWithValue to assign Demographics.
// SQL Server will implicitly convert strings into XML.
command.Parameters.AddWithValue("@demographics", demoXml);
try
{
connection.Open();
Int32 rowsAffected = command.ExecuteNonQuery();
Console.WriteLine("RowsAffected: {0}", rowsAffected);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)