标签: cfqueryparam

我应该如何在CFQUERYPARAM list ="true"中使用maxlength?

我很好奇当你传递一个列表时,maxlength属性如何在CFQUERYPARAM中工作.maxlength是否适用于整个列表的长度(即长度为"1,2,3,4,5,6"= 11)?或者maxlength是否适用于列表中的每个项目?

我找不到任何这方面的文件.

coldfusion cfqueryparam list maxlength cfml

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

你如何在ORDER BY子句中使用cfqueryparam?

我正在努力成为一名优秀的CF Web开发人员,并使用<cfqueryparam>所有FORM或URL元素来实现我的SQL查询.

在这种情况下,我试图允许用户动态控制ORDER BY子句.

<cfquery datasource="MyDSN" name="qIncidents">
  SELECT IncidentID, AnimalID, IntakeDate, DxDate, OutcomeDate
  FROM Incidents
  WHERE ShelterID = <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.ShelterID#">
  ORDER BY <cfqueryparam cfsqltype="cf_sql_varchar" value="#SortBy#">
</cfquery>
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到以下错误:

由ORDER BY编号1标识的SELECT项包含一个变量,作为标识列位置的表达式的一部分.只有在引用列名的表达式进行排序时,才允许使用变量.

有关如何安全地做到这一点的任何建议?

sql coldfusion cfquery cfqueryparam

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

在查询查询中使用CFQUERYPARAM是否有任何逻辑上的原因?

我主要CFQUERYPARAM用来防止SQL注入.由于查询查询(QoQ)不接触数据库,是否有任何逻辑上的理由在其中使用CFQUERYPARAM?我知道这不匹配的值cfsqltype,并maxlength会抛出异常,但是,这些值应该已经在此之前进行验证,并显示(从UX观点)友好的信息.

t-sql coldfusion cfquery cfqueryparam

7
推荐指数
2
解决办法
776
查看次数

防止ColdFusion中的SQL注入

我正在努力提高应用程序的安全性.每当我从用户(无论是通过POST还是GET)接收应该是整数的数据时,我都会适当地验证.但通常数据是VARCHAR,有时可以包含HTML.

在这种情况下,如何保护我的数据库免受SQL注入?

是否 <cfqueryparam value="#form.textInput#" cfsqltype="cf_sql_varchar">保护查询不在VARCHAR值中发送恶意SQL语句?

sql coldfusion cfqueryparam code-injection

6
推荐指数
2
解决办法
1931
查看次数

将cfqueryparam与常量一起使用

我们虔诚地cfqueryparam在SQL查询中使用.

我的一些前辈在使用直接值而不是变量时似乎有点过分热心.

是不是

record_is_deleted_bt = <cfqueryparam cfsqltype="cf_sql_bit" value="0">
Run Code Online (Sandbox Code Playgroud)

矫枉过正?我的意思是,没有机会进行SQL注入,我不认为在这里使用绑定变量可以提高数据库性能.这样做是否合情合理

record_is_deleted_bt = 0
Run Code Online (Sandbox Code Playgroud)

cfqueryparam除了习惯使用它之外,在这种情况下使用是否有任何优势?有缺点吗?

coldfusion cfqueryparam

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

使用cfqueryparam搜索包含哈希的索引列的慢查询

我有以下查询在16毫秒 - 30毫秒运行.

<cfquery name="local.test1" datasource="imagecdn">
    SELECT hash FROM jobs WHERE hash in(
        'EBDA95630915EB80709C69089315399B',
        '3617B8E6CF0C62ECBD3C48DDF8585466',
        'D519A38F09FDA868A2FEF1C55C9FEE76',
        '135F94C3774F7719CFF8FF3A275D2D05',
        'D58FAE69C559273D8427673A08193789',
        '2BD7276F209768F2FCA6635659D7922A',
        'B1E3CFBFCCFF6F5B48A849A050E6D424',
        '2288F5B8A797F5302E8CA24323617236',
        '8951883E36B5D38A4643DFAA0396BF13',
        '839210BD564E30BE1355D1A6D4EF7081',
        'ED4A2CB0C28B608C29576819CF7BE19B',
        'CB26925A4874945B810707D5FF0B91F2',
        '33B2FC229F0CC797A02AD163CDBA0875',
        '624986E7547DBAC0F47B3005CFDE0A16',
        '6F692C289BD805CEE41EF59F83F16F4D',
        '8551F0033C617BD9EADAAD6CEC4B3E9E',
        '94C3C0A74C2DE085FF9F1BBF928821A4',
        '28DC1A9D2A69C2EDF5E6C0E6368A0B3C'
    )
</cfquery>
Run Code Online (Sandbox Code Playgroud)

如果我执行相同的查询但使用cfqueryparam它运行500ms - 2000ms.

<cfset local.hashes = "[list of the same ids as above]">
<cfquery name="local.test2" datasource="imagecdn">
    SELECT hash FROM jobs WHERE hash in(
        <cfqueryparam cfsqltype="cf_sql_varchar" value="#local.hashes#" list="yes">
    )
</cfquery>
Run Code Online (Sandbox Code Playgroud)

该表大约有60,000行."hash"列是varchar(50)并且具有唯一的非聚集索引,但不是主键.数据库服务器是MSSQL 2008.Web服务器正在运行最新版本的CF9.

知道为什么cfqueryparam会导致性能轰炸吗?无论我刷新页面多少次,它每次都会以这种方式运行.如果我将列表配对只有2或3个哈希值,它仍然表现不佳,如150-200ms.当我取消cfqueryparam时,性能如预期.在这种情况下,有可能进行SQL注入,因此使用cfqueryparam肯定会更好,但是从索引列中找到2条记录不应该花费100毫秒.

编辑:

  1. 我们使用的hash()是非UUIDS或GUIDS 生成的哈希.散列由a生成,hash(SerializeJSON({ struct }))其中包含要在映像上执行的一组操作的计划.这样做的目的是它允许我们在插入之前和查询之前知道该结构的确切唯一ID.这些哈希充当已经存储在DB中的结构的"索引".除了哈希之外,相同的结构将散列到相同的结果,这对UUIDS和GUIDS来说是不正确的.

  2. 该查询正在5个不同的CF9服务器上执行,并且所有这些服务器都表现出相同的行为.对我来说,这排除了CF9缓存某些东西的想法.所有服务器都连接到完全相同的DB,因此如果发生缓存,则必须是数据库级别.

sql-server coldfusion performance cfqueryparam coldfusion-9

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

在ColdFusion中,属性值周围的单引号和双引号有什么作用?

例如#Trim(FORM.fromfirstname)#周围的"#"是什么?我正在添加<cfqueryparam...>标签,我想知道是否还需要报价?

<CFQUERY NAME="account" DATASOURCE="#APPLICATION.centralDSN#">
    SELECT * 
    FROM users
    WHERE (firstname =<CFQUERYPARAM VALUE="#Trim(FORM.fromfirstname)#">)
        AND (lastname = <CFQUERYPARAM VALUE="#Trim(FORM.fromlastname)#">)
        AND (email = '#Trim(FORM.fromemail)#')
</CFQUERY>
Run Code Online (Sandbox Code Playgroud)

这是一个不使用该WHERE子句引号的:

<CFIF getUser.RecordCount>
    <CFQUERY NAME="cUser" DATASOURCE="#APPLICATION.centralDSN#">
        UPDATE users
            SET mailing_list = <CFIF IsDefined("FORM.mailing_list")>#FORM.mailing_list#<CFELSE>0</CFIF>
        WHERE user_id = #getUser.user_id#
    </CFQUERY>
</cfif>
Run Code Online (Sandbox Code Playgroud)

编辑:如果他们什么都不做,保持它们没有坏处,对吗?在另一个文件中,我找到了像

    to="#ListFirst(EnglishEmailList)#"
    cc="#ListRest(EnglishEmailList)#"
Run Code Online (Sandbox Code Playgroud)

所以如果他们已经在那里我会留下他们?

sql coldfusion cfqueryparam

4
推荐指数
2
解决办法
1967
查看次数

<cfqueryparam>如何影响常量和空值的性能?

考虑以下:

<cfquery name="aQuery" datasource="#aSource#">
    SELECT aColumn
      FROM aTable
     WHERE bColumn = <cfqueryparam value="#aVariable#" cfsqltype="#aSqlType#" />
       AND cColumn = 'someConstant'
       AND dColumn is null
</cfquery>
Run Code Online (Sandbox Code Playgroud)

如果我改变

AND cColumn = 'someConstant'
Run Code Online (Sandbox Code Playgroud)

AND cColumn = <cfqueryparam value="someConstant" cfsqltype="#aSqlType#" />
Run Code Online (Sandbox Code Playgroud)

是否有潜在的性能提升?是否有可能伤害表现?

如果我这样做(使用cfqueryparam)AND dColumn is null怎么办?

我的发现尚无定论.

如果这很重要,请假设ColdFusion9和Oracle db 11g.

编辑:

我只想重申一下,我问的是cfqueryparam标签是专门用于常量和/或空值以及性能再现(如果有的话).

coldfusion null cfqueryparam oracle11g coldfusion-9

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

用于MS SQL的uniqueidentifier字段类型的最合适的Coldfusion cfsqltype是什么?

从Coldfusion 8连接到MS SQL 2008数据源时,我应该将什么Coldfusion cfsqltype用于设置为"uniqueidentifier"的SQL列.

<cfquery name="user" datasource="#ds#">
    SELECT id, username
    FROM users
    WHERE id = <cfqueryparam cfsqltype="WHAT_CF_SQL_TYPE_HERE?" value="#arguments.id#">
</cfquery>
Run Code Online (Sandbox Code Playgroud)

谢谢!

sql coldfusion cfqueryparam

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

对于一个用于TEXT的CFSQLType的ColdFusion cfqueryparam?

因此,如果我有一个cfqueryparam,并且SQL中的数据类型是TEXT,我使用哪个CFSQL类型?或者我是否按照以下关于uniqueidentifiers的链接?或者将数据类型更改为varchar/longvarchar更好?

coldfusion text types cfqueryparam coldfusion-8

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