为什么有人会在 SQL 子句中使用 WHERE 1=1 AND

2023-12-03

为什么有人会使用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(使用前将#替换为@)

为什么有人会在 SQL 子句中使用 WHERE 1=1 AND ? 的相关文章

随机推荐