通过cfquery安全地添加模式

时间:2014-03-03 05:08:20

标签: tsql coldfusion cfquery

我希望能够通过<cfquery>添加SQL架构。我知道这不安全:

<cfquery dataSource="#form.datasource#">
    CREATE SCHEMA [#form.schema#] AUTHORIZATION [dbo]
</cfquery>

这引发了错误:

<cfquery dataSource="#form.datasource#">
    CREATE SCHEMA <cfqueryparam CFSQLType="cf_sql_varchar" value="#form.schema#"> AUTHORIZATION [dbo]
</cfquery>  

存储过程不是一种选择。它们不是一个选项,因为存储过程应该是模式的一部分,而模式尚不存在。

1 个答案:

答案 0 :(得分:4)

如果您在使用之前没有验证它是否安全,那么这只是“不安全”。我想如果你只是将form.schema值确认为一系列安全字符而不是其他内容,那么你会没事的?这是一个简单的正则表达式:^\w+$(允许A-Z,0-9和下划线)。

并且您不能使用<cfqueryparam>作为参数值,而不是SQL语句的随机位。参考:“What one can and cannot do with <cfqueryparam>