gpt4 book ai didi

c# - 防止 SELECT 语句中的 SQL 注入(inject)

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:58 25 4
gpt4 key购买 nike

我正在使用 VS2005 C# ASP.NET 和 SQL Server 2005。

我的 asp 页面上有一个搜索 功能,我觉得我的SELECT 查询容易受到 SQL 注入(inject)攻击。

这是我当前的SELECT语句:

string LoggedInUser = (User.Identity.Name);

SqlDataSource1.SelectCommand = "SELECT * FROM [TABLE1] where [" + DropDownList1.Text + "] like '%" + searchTB.Text + "%' AND [empUser] LIKE '%"+LoggedInUser+"%'";
SqlDataSource1.DataBind();

*其中 searchTB 是我的搜索文本框; DropDownList1 是我的搜索类别; LoggedInUser 是登录用户的用户名。


我在我的一个INSERT 语句中实现了参数而不是连接:

string sql = string.Format("INSERT INTO [TABLE2] (Username) VALUES (@Username)");
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("Username", usernameTB.Text);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

我想更改我的 SELECT 语句,就像我的 INSERT 语句一样,改用参数。我可以知道我应该如何更改它吗?

谢谢

最佳答案

您可以使用以下方式将参数添加到您的选择命令

SqlDataSource s = new SqlDataSource();
s.SelectParameters.Add("paramName", "paramValue");

还有其他用于删除、更新和插入的参数集合。

s.DeleteParameters
s.UpdateParameters
s.InsertParameters

更多信息:

MSDN: SqlDataSource.SelectParameters Property

Programmatically Using SqlDataSource

希望对您有所帮助

关于c# - 防止 SELECT 语句中的 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8428743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com