从SQL注入安全吗?

cho*_*obo 1 c# asp.net

我通常在查询中使用sql参数,但在这种情况下,我需要动态创建不仅仅是参数.

有人可以对任何变量使用注入吗?除了存储过程之外,还有一种通过代码防止注入的简单方法吗?

string whereClause = "WHERE " + filter.ToString() + " > " + nextStartPoint;
string orderBy = "ORDER BY " + filter.ToString() + " DESC";   
Run Code Online (Sandbox Code Playgroud)

string sql = "SELECT TOP(" + numItemsToGet + ") * " +
                                 "FROM Items " +
                                  whereClause + " " +
                                  orderBy;
Run Code Online (Sandbox Code Playgroud)

更新

filter.ToString()是实际的列名

我很惊讶以下工作(部分ex)...我还认为你必须用sql参数引用列名.

cmd.Parameters.AddWithValue("Count", 10);

                    string sql = "SELECT TOP(@Count) * " +
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 7

是的,这肯定是注射的.如果用户控制filter参数,那么他们很容易将错误的SQL注入您的语句.

防止注入攻击的最简单方法是使用SqlCommand构建命令.它旨在帮助防止此类攻击,并将采取适当的措施来保护您的输入