Мы используем 3-уровневую архитектуру в ASP.Net.SQL Injection on Views
Есть 3 слоя
- презентации
- Бизнес
- Доступ к данным
уровня доступа к данным и т.д. содержит функцию GetData и ExecuteQuery. Что я хочу знать, так это то, что вы хотите вызвать View непосредственно из уровня презентации. Есть ли вероятность внедрения SQL при вызове представления из front-end без использования хранимой процедуры?
Presentation Layer (C#)
protected void btnView_Click(object sender, EventArgs e)
{
DL obj = new DL();
DataTable tb = new DataTable();
string query = "select * from ViewTeacher where FID = " + txtName.Text;
tb = obj.GetData(query);
}
DBAccess
public DataTable GetData(string query)
{
DataTable datatable = new DataTable();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = query;
try
{
if (cmd.Connection.State != ConnectionState.Open)
{
cmd.Connection.Open();
}
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(datatable);
}
}
catch (Exception ex)
{
throw new ArgumentException(ex.Message);
}
return datatable;
}
Можете ли вы предоставить какой-то код, так как вы его называете (прочитайте функцию), где он может пойти не так. – Dorvalla
@Dorvalla., Конечно, позвольте мне отредактировать –
, вы можете вызвать представление непосредственно из уровня представления, и у него может быть проблема с sql-инъекцией, основанная на том, как вы его вызываете и, следовательно, по просьбе Dorvalla, если вы предоставляете код, который используете для вызова мы можем предположить, что код вызывает проблему с sql-атакой или нет? –