【发布时间】:2015-11-18 18:57:35
【问题描述】:
我们在 ASP.Net 中使用 3 层架构。
共有 3 层
- 演示文稿
- 商务
- 数据访问
数据访问层包含 GetData 和 ExecuteQuery 等功能。 我想知道的是,想要直接从表示层调用视图。在不使用存储过程的情况下从前端调用视图是否存在 SQL 注入的可能性?
表示层 (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);
}
数据库访问
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.,当然让我编辑
-
您可以直接从表示层调用视图,根据您调用它的方式,它可能存在 sql 注入问题,因此如果您提供用于调用视图的代码,则按照 Dorvalla 的要求我们可以建议代码导致sql注入问题吗?
-
@Dorvalla 我已经编辑了问题。
-
@RameshBabu.. 编辑请检查
标签: sql sql-injection 3-tier