0

我试图使用文本框作为 gridview 的过滤器并最终编写了以下代码:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        Try
            SqlDataSource1.ConnectionString = "connection string goes here"
            SqlDataSource1.SelectCommand = "SELECT * FROM TABLE WHERE area LIKE '" + TextBox1.Text + "%'"
            'GridView1.DataSource = SqlDataSource1.SelectCommand
            SqlDataSource1.DataBind()
            GridView1.DataBind()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

有用。但是我觉得它太简单和不安全。您能否告诉我应该如何以更“专业”(真实)的方式完成?

4

2 回答 2

1

内联 SQL 不安全,您很容易受到 SQL 注入的攻击,因为可能会在该文本框中输入对您的数据库极为有害的内容,并且不会检查该值。

阅读了解 SQL 注入和创建 SQL 注入证明 ASP.NET 应用程序

在 SQL Server 中使用参数化 SQL 或存储过程。

于 2013-08-02T19:46:25.663 回答
1

要使用参数化 sql 语句,请添加带有其 sql 数据类型和默认值的 select 参数。

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        Try
            SqlDataSource1.ConnectionString = "connection string goes here"
            SqlDataSource1.SelectCommand = "SELECT * FROM TABLE WHERE area LIKE @area"
            'GridView1.DataSource = SqlDataSource1.SelectCommand
            SqlDataSource1.SelectParameters.Add(New Parameter("area", DbType.String,TextBox1.Text))  
            SqlDataSource1.DataBind()
            GridView1.DataBind()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
于 2013-08-02T20:13:25.317 回答