Я создаю динамический SQL Query с использованием CFLoop
. Я использую CFSaveContent
для перебора переменных и построения запроса, а затем я выполняю его в CFQuery
с использованием PreserveSingleQuotes
. Это работает нормально, но проблема с этим методом заключается в том, что я не могу использовать CFQueryParam
, поэтому мой запрос уязвим для инъекций. Было ли интересно, есть ли способ обхода проблемы?PreserveSingleQuotes и CFQueryParam
Update:
<cfsavecontent variable="sqlstring">
SELECT id
,(CASE
<cfloop query="qGetRules">
WHEN val1 >=#qGetRules.equ# AND val2 >#arguments.leve# THEN 1
</cfloop>
ELSE 0
END) AS criteria
FROM mt4_users
</cfsavecontent>
<cfquery name="qGetEquity" datasource="mydatasource">
#PreserveSingleQuotes(variables.sqlstring)#
</cfquery>
Итак, на этом примере, как вы можете видеть, что я не могу использовать cfqueryparam
для arguments.leve
, потому что это приведет к краху на PreserveSingleQuotes
Были ли у вас взгляды на документы в [эквивалентах cfscript cfquery и cfqueryparam] (https://helpx.adobe.com/coldfusion/cfml-reference/script-functions-implemented-as-cfcs/query. HTML)? – Leigh
Теоретически, все мы все время проверяем все поля, предоставленные пользователем. Опираясь только на параметр запроса для обеспечения безопасности, вы не так безопасны, как могли бы быть. Кроме того, у PreserveSingleQuotes есть свое место, но у меня никогда не было успеха с апострофами. –
Поскольку это веб-сервис для мобильных устройств, я не могу проверить вход пользователя (рядом с мобильным приложением). Если кто-то нюхает URL-адрес и пытается ввести SQL, мне нужно его остановить. – BlackM