相关疑难解决方法(0)

为什么有人会在查询中输入“where 1=1”?

我今天在我们的数据库中遇到了一个视图,其中 where 子句中的第一个语句是where 1 = 1. 这不应该对每条记录都返回 true 吗?如果不过滤任何记录,为什么有人会写这个?

sql-server-2005

19
推荐指数
2
解决办法
6930
查看次数

构建动态 SQL-Server Where 子句

让我们回顾一下SQL-Server 的dba.exchange Oracle 问题

这是 SaUce 的代码,经过一些格式化:

CREATE PROCEDURE GetCustomer 
    @FirstN nvarchar(20) = NULL, 
    @LastN nvarchar(20) = NULL, 
    @CUserName nvarchar(10) = NULL, 
    @CID nvarchar(15) = NULL 
as
begin 
    DECLARE @sql nvarchar(4000)

    SELECT @sql = 'C_FirstName, C_LastName, C_UserName, C_UserID 
FROM CUSTOMER
WHERE 1=1 '

    IF @FirstN IS NOT NULL 
        SELECT @sql = @sql + ' AND C_FirstName like @FirstN ' 

    IF @LastN IS NOT NULL 
        SELECT @sql = @sql + ' AND C_LastName like @LastN ' 

    IF @CUserName IS …
Run Code Online (Sandbox Code Playgroud)

performance sql-server sql-injection

6
推荐指数
1
解决办法
4054
查看次数