2016-11-18 2 views
1

Я знаю, это может показаться странным, и я, безусловно, смогу обойти мою проблему. Я использую SQL на стороне сервера кода и утверждение аналогично следующему:Выделить все факты, даже если присутствует предложение WHERE

SELECT myCol FROM mytable WHERE myCol2=url_parameter 

url_parameter является строка, передаваемая через URL. Есть ли способ установить url_parameter на что-то, но все же получить все факты в таблице?

+0

Какой бренд SQL? –

+0

Если у вас есть возможность взломать его, есть трюки для ввода sql, где вы можете сделать что-то вроде url_parameter = 'whatever 'или 1 = 1'. HACK - это оперативное слово. Если это действительно работает, у вас есть БОЛЬШАЯ БОЛЬШАЯ проблема. – RThomas

ответ

1

Обычный способ справиться с этим при наличии запроса, который выглядит как:

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

Если вы munging строку SQL вместо передачи параметра, можно вставить значение myCol2 (без кавычек), если вы хотите получить все значения. Однако вы должны использовать параметры.

1

Не должно быть; если есть, то серверная сторона написана таким образом, чтобы разрешить атаки SQL-инъекций, что, вероятно, представляет большую проблему, чем проблема, которую вы хотите решить.

Если вы можете изменить код на стороне сервера, вы можете заставить его ответить на какое-либо значение параметра или комбинацию значений параметров, выполнив вариант запроса, не имеющего условия WHERE. Или есть другие варианты ... но вы уже сказали, что можете обойти это, поэтому я предполагаю, что у вас есть одна из этих идей.

+0

Спасибо, я мог бы использовать решение Гордона, ничего не пропустив, но это было бы уродливо и, по вашему мнению, уязвимо. Я просто создал другой класс, когда мне нужен запрос без WHERE, потому что я мог бы сделать запрос динамическим. – aless80

Смежные вопросы