Sql 即使存在WHERE子句,也要选择所有事实

Sql 即使存在WHERE子句,也要选择所有事实,sql,intersystems-cache-zen,Sql,Intersystems Cache Zen,我知道这听起来很奇怪,我当然可以解决我的问题。我在服务器端使用SQL代码,语句类似于以下内容: SELECT myCol FROM mytable WHERE myCol2=url_parameter url\u参数是通过url传递的字符串。有没有办法将url\u参数设置为某个值,但仍然可以得到表中的所有事实 不应该有;如果存在,那么服务器端的编写方式将允许SQL注入攻击,这可能是一个比您想要解决的问题更大的问题 如果您能够修改服务器端代码,那么您可以让它通过运行不具有WHERE条件的查询变体

我知道这听起来很奇怪,我当然可以解决我的问题。我在服务器端使用SQL代码,语句类似于以下内容:

SELECT myCol FROM mytable WHERE myCol2=url_parameter

url\u参数
是通过url传递的字符串。有没有办法将
url\u参数设置为某个值,但仍然可以得到表中的所有事实

不应该有;如果存在,那么服务器端的编写方式将允许SQL注入攻击,这可能是一个比您想要解决的问题更大的问题


如果您能够修改服务器端代码,那么您可以让它通过运行不具有WHERE条件的查询变体来响应某些参数值或参数值的组合。或者还有其他选择。。。但是你已经说过你可以解决这个问题,所以我想你已经想到了其中一个想法。

处理这个问题的正常方法是使用如下查询:

SELECT myCol
FROM mytable
WHERE myCol2 = url_parameter OR url_parameter IS NULL;  -- or url_parameter = '';

如果您使用的是SQL字符串而不是传递参数,则可以在希望获取所有值时插入值
mycl2
(不带引号)。但是,您应该使用参数。

什么品牌的SQL?如果您有能力破解它,可以使用SQL注入技巧,执行url\u parameter=
whatever'或1=1
之类的操作。黑客是关键。不过,如果这真的奏效,你会有更大的担忧。谢谢,我本可以使用戈登的解决方案,不通过任何东西,但它会很难看,而且据你说,很脆弱。我刚刚创建了另一个类,用于在需要查询时不使用WHERE,因为我可以使查询动态化。