Я новичок в C # и ASP.NET.
Я использую VS2005 C # и SQL Server 2005 и провел некоторые исследования по предотвращению SQL-инъекций
У меня есть несколько функций вмое серверное веб-приложение, которое, я не уверен, требует ли оно подтверждения ввода.
1) Вход элемент управления из панели инструментов,Я реализовал управление входом непосредственно из VS Toolbox и попытался использовать RegularExpressionValidator для моего инструмента входа, но, похоже, он не работает.У Microsoft уже есть встроенная проверка для инструмента?
2) Загрузка листов файлов Excel в базу данных SQL Server.У меня есть функция, которая позволяет пользователям загружать листы файлов Excel в базу данных.Вначале я не чувствую необходимости проверять его, так как нет открытых SQL-запросов, но после этого я спрашиваю себя, возможно ли пользователю ввести SQL-запросы в файл Excel, что приведет кSQL-инъекция во время загрузки.Ниже приведен фрагмент кода загрузки, с нетерпением ждем совета, если потребуется проверка:
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strUploadFileName + ";Extended Properties=Excel 8.0;";
using (OleDbConnection connection =
new OleDbConnection(connStr))
{
string selectStmt = string.Format("Select [COLUMNS] FROM [userlist$]");
OleDbCommand command = new OleDbCommand(selectStmt, connection);
connection.Open();
Console.WriteLine("Connection Opened");
// Create DbDataReader to Data Worksheet
using (DbDataReader dr = command.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString = "Data Source=<datasource>";
// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "UserDB";
bulkCopy.WriteToServer(dr);;
}
}
}
3) INSERT .У меня есть пара операторов INSERT
, которые в основном используются для вставки новых записей в базу данных.Поскольку эти операторы на самом деле не собирают данные из базы данных, я не уверен, требуется ли проверка.Ниже приведен пример INSERT
оператора:
SqlConnection conn = new SqlConnection("<datasource>");
string sql = string.Format("INSERT INTO [UserData] (Username, Password, Role, Membership, DateOfReg) VALUES ('" + un.Text + "', '" + pw.Text + "', '" + role.Text + "', '" + ms.Text + "', '" + dor.Text + "')"); --> all *.Text are textboxes on the webpage
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
4) Функция поиска на веб-странице.У меня есть несколько страниц .aspx, которые отображают данные GridView.Ниже приведен пример моего поискового запроса, который использует текстовое поле и фильтр раскрывающегося списка:
SqlDataSource1.SelectCommand = "SELECT * FROM [UserData] where [" + DropDownList1.Text + "] like '%" + searchTextBox.Text + "%'";
SqlDataSource1.DataBind();
Я хотел бы знать, какой самый простой способ выполнить проверку входных данных на sql сам заявляет, не создавая дополнительных методов и функций , к приведенным выше примерам, как я видел regular expression
и используя mysql_real_escape_string
.
Заранее благодарим вас за любые предоставленные советы и предложения.
Неплохо было бы привести и прямые примеры.