CFQUERY没有正确转义单引号

时间:2011-07-20 04:00:40

标签: coldfusion escaping

  

可能重复:
  Coldfusion adding extra quotes when constructing database queries in strings

所有

我试图在插入过程中使用getter引用bean。 CF没有在'form.title'中的值中正确地转义单引号,因此我收到格式错误的SQL错误。

有什么想法吗?

这是代码。

<cfscript>
form.title = "page's are awesome";

page = new model.page.page(argumentCollection = form);

<cfquery name="test" datasource="ksurvey">
insert into page(title)
values('#page.getTitle()#')
</cfquery>

2 个答案:

答案 0 :(得分:14)

如果你打算这样做,你需要preserveSingleQuotes()

INSERT INTO page( title ) VALUES ( '#preserveSingleQuotes( page.getTitle() )#' )

当然,插入关于如何使用cfqueryparam以避免SQL注入攻击的标准警告。

INSERT INTO page( title ) VALUES ( <cfqueryparam value="#page.getTitle()#" cfsqltype="cf_sql_varchar" /> )

供参考:

答案 1 :(得分:3)

如果不使用cfqueryparam,我不会在数据库中插入任何值,这不安全!不仅如此,cfqueryparam将为您处理所有逃脱。

<cfquery name="test" datasource="ksurvey">
   insert into 
       page(title)
   values(<cfqueryparam value="#page.getTitle()#" cfsqltype="cf_sql_varchar">);
</cfquery>