나는 CFC를 통해 데이터베이스에 데이터를 게시하는 많은 외부 양식을 가지고 있습니다.Coldfusion, SQL 주입 공격으로부터의 cfc 보안
내가하는 일은
- 다시 객체 (CFC)에 개체 및지도 양식 데이터를 생성 포스트에서 포스트 백/
- 승 형태
- 사용 CFPARAM가에 유효성 검사를 할 만들기입니다 이 유형과 상점. 범위
- 문자열을 검사하여 공격으로부터 멸균하기 위해 사용자 정의 방법을 호출하십시오 (잘 작동하는 것 같습니다)
- 삽입 할 Cfquery.
삽입 공격시 SQL 공격으로부터 애플리케이션을 보호하기 위해 할 수있는 일이 있습니까? select 문에서 CFqueryParam을 사용합니다. insert 문에서도 사용해야합니까? 간단한 CFC의
예 : 그것은 ColdFusions의 SQL 인젝션 취약성 해결책으로서
<!--- 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>
DefyGravity의 조언을 따르고, 을 사용하지 않는 동적 값을 가진 쿼리를 작성하지 마십시오. –