我希望能够通过<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>
存储过程不是一种选择。它们不是一个选项,因为存储过程应该是模式的一部分,而模式尚不存在。
答案 0 :(得分:4)
如果您在使用之前没有验证它是否安全,那么这只是“不安全”。我想如果你只是将form.schema
值确认为一系列安全字符而不是其他内容,那么你会没事的?这是一个简单的正则表达式:^\w+$
(允许A-Z,0-9和下划线)。
并且您不能使用<cfqueryparam>
作为参数值,而不是SQL语句的随机位。参考:“What one can and cannot do with <cfqueryparam>
”