标签: cfquery

用于动态查询的SQL注入保护

针对SQL注入漏洞的典型控制是使用绑定变量(cfqueryparam标记),字符串数据验证以及转向实际SQL层的存储过程.这很好,我同意,但如果该网站是遗留的,它具有很多动态查询.然后,重写所有查询是一项艰巨的任务,需要进行大量的回归和性能测试.我正在考虑使用动态SQL过滤器并在调用cfquery之前调用它以进行实际执行.

我在CFLib.org(http://www.cflib.org/udf/sqlSafe)中找到了一个过滤器:

<cfscript>
/**
* Cleans string of potential sql injection.
*
* @param string      String to modify. (Required)
* @return Returns a string.
* @author Bryan Murphy (bryan@guardianlogic.com)
* @version 1, May 26, 2005
*/
function metaguardSQLSafe(string) {
var sqlList = "-- ,'";
var replacementList = "#chr(38)##chr(35)##chr(52)##chr(53)##chr(59)##chr(38)##chr(35)##chr(52)##chr(53)##chr(59)# , #chr(38)##chr(35)##chr(51)##chr(57)##chr(59)#";

return trim(replaceList( string , sqlList , replacementList ));
}
</cfscript>
Run Code Online (Sandbox Code Playgroud)

这似乎是一个非常简单的过滤器,我想知道是否有办法改进它或提出更好的解决方案?

coldfusion sql-injection cfquery owasp

1
推荐指数
1
解决办法
1181
查看次数

使用LIKE语句构建coldfusion查询问题

我正在尝试使用此行构建动态sql语句

<cfset SQL = "SELECT url, MONTH(event_date) AS months, YEAR(event_date) AS year, event_date, title from events where title LIKE '%#form.event_name#%' ">

<cfquery name="results" >
#SQL#
</cfquery>
Run Code Online (Sandbox Code Playgroud)

似乎like子句有问题.有任何想法吗?我是否需要逃避%?

谢谢

mysql coldfusion cfquery sql-like

1
推荐指数
1
解决办法
678
查看次数

为什么MySQL在寻找具有值插入名称的列

在对MySQL进行cfquery时,MYSQL在以下代码中给出了'字段列表'中的错误未知列'问题':

<cfquery name="qUpdateTheQuestion" datasource="testmaster">
INSERT INTO ETrueFalseQuestions
VALUES (<cfoutput>#newTypeID#</cfoutput>, `<cfoutput>#FORM.Question#</cfoutput>`, <cfoutput>#FORM.truefalse#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

我尝试了所有我想到的尝试来解决这个问题,以及我在尝试搜索解决方案时发现的一些建议,例如使用反引号而不是单引号.

我也不明白为什么它会搜索名为Question的列,因为这是FORM.Question的值,并根据输入到表单中的内容而更改.任何建议将不胜感激.

mysql coldfusion cfquery

1
推荐指数
1
解决办法
120
查看次数

我没有输入任何内容时插入空记录

我正在尝试首先检查NULL,如果值为NULL,则跳过INSERT.但这不是正在发生的事情.即使我没有在表单字段中输入任何内容,代码也会插入NULL记录.这几乎就像是在认识到不存在的东西.

<cfoutput>
<cfif form.TBCom is not ""> 
    <cfquery name="TestTBComm" datasource="TrenaTest">
        INSERT INTO Comment1 (
            UniqueNum,
            ComTyp,
            Comments )
        SELECT 
           '#UniqueNum#',
           '#TBComV#',
           '#TBCom#'
    </cfquery>
</cfif>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

coldfusion null cfquery

1
推荐指数
1
解决办法
258
查看次数

cfstoredproc和cfquery的结果不同

当我执行存储过程通过时cfstoredproc,我得到的结果不同于调用存储过程通过cfquery.我正在向每个调用传递相同的确切参数值.而且,当我在SQL Studio中运行存储过程时,我得到了正确的结果(与cfquery相同).

这是cfstoredproc电话

<cfstoredproc datasource="#request.mainDSN#" debug="#request.debug#" procedure="rankingresults">
   <cfprocparam type="in" value="8652" CFSQLType="CF_SQL_INTEGER">
   <cfprocparam type="in" value="50" CFSQLType="CF_SQL_INTEGER">
   <cfprocparam type="in" value="53" CFSQLType="CF_SQL_INTEGER">
   <cfprocresult name="local.listing">
</cfstoredproc>
Run Code Online (Sandbox Code Playgroud)

这是cfquery电话

<cfquery datasource="#request.mainDSN#" name="rankings">
   EXEC rankingresults
    @CityZipId = 8652,
    @distance = 50,
    @sic = 53
</cfquery>
Run Code Online (Sandbox Code Playgroud)

结果完全不同.它甚至都不是很接近.我已经被我的头撞了几个小时了,我无法弄清楚它为什么要做它正在做的事情.

UPDATE

存储的proc很大(我继承了一个),所以我不打算将它全部粘贴在这里:http://pastebin.com/EtufPWXf

t-sql coldfusion cfquery cfstoredproc coldfusion-8

1
推荐指数
1
解决办法
651
查看次数

如何检查cfloop和cfquery的执行时间?

我有一些大的查询和循环,这给了我一个excel输出.

我在excel一代的表现上遇到了麻烦.这需要很多时间.所以我想到了优化代码,为此我想知道我的代码块占用了多少时间?请问身体有什么帮助吗?

我只是想知道如何转储cfquery/cfloop/cfoutput的执行时间......?

coldfusion cfquery query-optimization cfloop

1
推荐指数
1
解决办法
1554
查看次数

Cfquery导致XSS和SQL注入问题

我最近运行了一个应用程序扫描(IBM),现在我正在尝试修复出现的问题.我的大部分问题源于cfquery(见下文).我试图得到它,以便存储的XSS和SQL注入问题不会出现在我的扫描上.任何帮助将不胜感激,因为这是我第一次做某种事情.

谢谢!

<cfquery name="enter_question" datasource="#dsn#">
INSERT INTO xx_questions(q_id,
                      q_name,
                  q_narrative,
                  q_used,
                  q_type)
VALUES(               #variables.new_q_id#,
                      '#form.q_name#',
                  '#form.q_narrative#',
                  'n',
                  #form.q_type#)
</cfquery>
Run Code Online (Sandbox Code Playgroud)

xss coldfusion sql-injection cfquery

1
推荐指数
1
解决办法
194
查看次数

Coldfusion:执行包含cfqueryparam的动态查询

一,代码.我正在制作一个查询结构:

<cfset myQueryStruct = { 
qone = "select * from t1 where column = <cfqueryparam cfsqltype='cf_sql_varchar' value='#arguments.a1#'>",
qtwo = "select * from t2 where column = <cfqueryparam cfsqltype='cf_sql_varchar' value='#arguments.a1#'>"
}>
Run Code Online (Sandbox Code Playgroud)

我需要动态执行查询,如下所示:

<cfquery name="qName" datasource="#dsn#">
    #myQueryStruct[arguments.type]#
</cfquery>
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

Error Executing Database Query.
[Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near '<'. 
Run Code Online (Sandbox Code Playgroud)

似乎错误与<cfqueryparam cfsqltype='cf_sql_varchar' value='#arguments.a1#'>查询中的" "("<")有关

我尝试使用evaluate()并收到此错误:

Invalid CFML construct found on line 1 at column 15.
ColdFusion was looking at the following text:

t1
Run Code Online (Sandbox Code Playgroud)

我知道我们可以通过<cfif>在里面使用梯子来做到这一点,<cfquery>我的问题是,我们可以像我提到的那样 …

coldfusion refactoring cfquery cfqueryparam

1
推荐指数
1
解决办法
351
查看次数

在查询循环中生成总计

我有一个简单的查询,它通过ID来提取记录列表:

<cfquery name="resTotals" datasource="#datasource#">
   SELECT ticket_id
   FROM   closed_tickets
   WHERE  YEAR(closed_date) = '2017' 
   AND    ticket_type = 'residential' 
</cfquery>
Run Code Online (Sandbox Code Playgroud)

然后我尝试在另一个不同表的查询中循环访问这些ID,以便检查是否存在付款记录.目标是总计所有支付记录,以获得支付美元的总金额.

我有这个查询,但它抛出一个错误:不能将字符串[99.00]转换为类型[数组]的值

<cfloop query="resTotals">
     <cfquery name="resPaymentTotals" datasource="#datasource#">
        SELECT payment_amount
        FROM   payments
        WHERE  ticket_id = #resTotals.ticket_id#
     </cfquery>

 </cfloop>

 Amount of Sales: $ #ArraySum(resPaymentTotals.payment_amount)#
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我是在正确的轨道上吗?

coldfusion cfquery cfloop

1
推荐指数
1
解决办法
226
查看次数

queryEach或.each()不在CF 11工作,为什么?

我正在以谷歌更好的形式进行搜索,以便在coldfusion中对"查询"进行交流,因为我在公司工作的新人,我试图从CF获得更多

在这里我的尝试:

我的模特:

<cffunction hint="Foo" name="Foo" access="public" returntype="query">
    <!--- Argumentos --->
    <cfargument hint="Something" name="ArgComBus" type="string" required="no" default="">
    <cfargument hint="Other thing" name="ArgPar" type="string" required="no" default="">

    <cfscript>
        queryService = new Query();
        queryService.setSql("
            SELECT
                column1,
                column2,
            FROM
                tab_bar
            WHERE
                1=1
                #arguments.ArgComBus#
        ");
        queryService.setDataSource(session.Dsn);

        if(Len(Trim(arguments.ArgPar))){
            Evaluate(arguments.ArgPar);
        }
        queryResult = queryService.execute();
        qBus = queryResult.getResult();
    </cfscript>


    <cfreturn qBus>
</cffunction>
Run Code Online (Sandbox Code Playgroud)

我的剧本

<cfscript>
arrFoo = arrayNew(1);

qFoo = this.Foo(
    ArgComBus = " AND column1 = #variables.bar# ");

// First Attempt - The each method was not found.
qFoo.each(function …
Run Code Online (Sandbox Code Playgroud)

coldfusion cfquery coldfusion-11

1
推荐指数
1
解决办法
105
查看次数