Coldfusion,安全cfc来自SQL注入攻击

时间:2011-08-26 19:32:07

标签: sql-server-2008 coldfusion sql-injection cfc

我有一堆外部表单,通过CFC将数据发布到数据库中。

我的工作是

  1. 使用回发创建表单
  2. 在帖子后面创建一个对象并将表单数据映射到对象(cfc)
  3. 使用CFparam对此类型和商店进行验证。范围
  4. 调用自定义方法扫描字符串以使其免受攻击(似乎效果很好)
  5. 要插入的Cfquery。
  6. 我还能做什么或者应该做些什么来保护应用程序免受插入时的SQL攻击?我在select语句中使用CFqueryParam,我是否也应该在insert语句中使用?

    简单CFC的示例:

    <!--- Instance Veriables ---> 
    <cfparam name="THIS.firstPrintedField" type="string" default="#NullString#" />
    <cfparam name="THIS.SecondPrintedField" type="string" default="#NullString#" />
    <cfparam name="THIS.participantFullName" type="string" default="#NullString#" />
    <cfparam name="THIS.studentStatus" type="string" default="#NullString#" />
    <cfparam name="THIS.dob" type="date" default="#NullDate#" />
    <cfparam name="THIS.readAndUnderStood_Day" type="string" default="#NullString#" />
    <cfparam name="THIS.readAndUnderStood_Month" type="string" default="#NullString#" />
    <cfparam name="THIS.readAndUnderStood_Year" type="string" default="#NullString#" />
    <cfparam name="THIS.agreeToTerms" type="boolean" default="#NullBool#" /> 
    <cfparam name="THIS.guardianFirstName" type="string" default="#NullString#" />
    <cfparam name="THIS.guardianMiddleName" type="string" default="#NullString#" />
    <cfparam name="THIS.guardianLastName" type="string" default="#NullString#" />
    <cfparam name="THIS.DateTimeSubmited" type="date" default="#NullDate#" />
    
    <cffunction access="public" name="addRecords" returntype="boolean">
        <cftry> 
            <!--- Sanitize the string properties --->
            <cfset Sanitize() />
            <cfquery datasource="#DSN#" name="qryAddRecords">
                INSERT INTO mod_OutdoorProgram_Waivers
                (
                    firstPrintedField
                    ,SecondPrintedField
                    ,participantFullName
                    ,studentStatus
                    ,dob
                    ,readAndUnderStood_Day
                    ,readAndUnderStood_Month
                    ,readAndUnderStood_Year
                    ,agreeToTerms
                    ,guardianFirstName
                    ,guardianMiddleName
                    ,guardianLastName
                )
                VALUES
                (
                    '#THIS.firstPrintedField#'
                    ,'#THIS.SecondPrintedField#'
                    ,'#THIS.participantFullName#'
                    ,'#THIS.studentStatus#'
                    ,'#THIS.dob#'
                    ,'#THIS.readAndUnderStood_Day#'
                    ,'#THIS.readAndUnderStood_Month#'
                    ,'#THIS.readAndUnderStood_Year#'
                    ,'#THIS.agreeToTerms#'
                    ,'#THIS.guardianFirstName#'
                    ,'#THIS.guardianMiddleName#'
                    ,'#THIS.guardianLastName#'
                )
            </cfquery>
            <cfcatch><cfreturn false /></cfcatch>
        </cftry>
            <cfreturn true />       
    </cffunction>
    

2 个答案:

答案 0 :(得分:16)

cfqueryparam应该随处可用,因为它是ColdFusions sql注入漏洞解决方案。

答案 1 :(得分:1)

此外,如果您确定要发布到CFC的网站,您可以使用某些逻辑来保护它们只接受来自该特定网站/ IP地址的连接...再一步让人们不要搞乱用你的代码......