为什么有人会使用WHERE 1=1 AND <conditions>
在 SQL 子句中(通过连接字符串获得的 SQL,或者视图定义)
我在某处看到这将用于防止 SQL 注入,但这看起来很奇怪。
如果有注射WHERE 1 = 1 AND injected OR 1=1
会有相同的结果injected OR 1=1
.
稍后编辑:视图定义中的用法怎么样?
谢谢您的回答。
仍然,
我不明白为什么有人会使用这种结构来定义视图,或者在存储过程中使用它。
以此为例:
CREATE VIEW vTest AS
SELECT FROM Table WHERE 1=1 AND table.Field=Value
如果条件列表在编译时未知,而是在运行时构建,则您不必担心是否有一个或多个条件。您可以像这样生成它们:
and <condition>
并将它们连接在一起。随着1=1
在开始时,最初的and
有一些关联。
我从未见过它用于任何类型的注入保护,正如你所说,它似乎没有多大帮助。我have将其视为一种实现便利。 SQL 查询引擎最终将忽略1=1
所以它应该不会对性能产生影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)