Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 Coldfusion,保护cfc免受SQL注入攻击_Sql Server 2008_Coldfusion_Sql Injection_Cfc - Fatal编程技术网

Sql server 2008 Coldfusion,保护cfc免受SQL注入攻击

Sql server 2008 Coldfusion,保护cfc免受SQL注入攻击,sql-server-2008,coldfusion,sql-injection,cfc,Sql Server 2008,Coldfusion,Sql Injection,Cfc,我有一堆外部表单,通过CFC将数据发布到数据库中 我所做的是 创建带有回发的表单 在“回发”对话框中,创建一个对象并将表单数据映射到对象cfc 使用CFparam对类型进行验证并存储在此中。范围 调用自定义方法扫描字符串以使其免受攻击似乎效果良好 要插入的查询。 我还可以或应该做些什么来保护应用程序免受insert上的SQL攻击?我在select语句中使用CFqueryParam,是否也应该在insert语句中使用 简单CFC示例: <!--- Instance Veriables ---

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

我所做的是

创建带有回发的表单 在“回发”对话框中,创建一个对象并将表单数据映射到对象cfc 使用CFparam对类型进行验证并存储在此中。范围 调用自定义方法扫描字符串以使其免受攻击似乎效果良好 要插入的查询。 我还可以或应该做些什么来保护应用程序免受insert上的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>

cfqueryparam应该在任何地方使用,因为它是ColdFusions sql注入漏洞解决方案。

cfqueryparam应该在任何地方使用,因为它是ColdFusions sql注入漏洞解决方案。

,如果您确实知道将要发布到CFC的站点,您可以通过一些逻辑保护它们,只接受来自该特定站点/IP地址的连接…只需再多做一步,防止人们弄乱您的代码…

,如果您确实知道将要发布到CFC的站点,您可以通过一些逻辑保护它们,只接受来自该特定站点/IP地址的连接…只需再多做一步,以防止人们弄乱您的代码…

要非常清楚,请遵循DefyGravity的建议,永远不要使用不使用的动态值编写查询。为了清楚起见,请遵循DefyGravity的建议,永远不要使用不使用的动态值编写查询。+1是显而易见的答案。。。。仅供参考,某些数据库不允许您在SELECT语句中使用CFQUERYPARAM。。。。仅供参考,某些数据库不允许在SELECT语句中使用CFQUERYPARAM。