2012-03-12 4 views
9

나는 그들이 온라인으로 상품 이미지를 게시 할 고객을위한 웹 사이트를 개발했습니다. URL은 www.domiainname.com/item-details.cfm?sku=125입니다. 누군가가 www.domiainname.com/item-details.cfm?sku=125%20and%203=3로 찾아 가서 어떤 오류가 발생했는지 알았습니다.이것은 SQL Injection 공격의 예입니까?

[email protected]@version-- 
item-details.cfm?sku=1291'[email protected]@version 
[email protected]@version 

마지막 세 가지 예는 확실히 오른쪽 시스템에 얻으려고 사람의 위치 :

는 또한의 오류 보고서를받은?

저장 프로 시저로 변환하면 삽입 공격의 위험이 줄어들거나 없습니까? 사용 cfqueryparam 및 SQL 주입에 대해 잊지

+1

그리고 예, 쿼리 (CFQUERYPARAM 태그에 예를 들어' ' – HPWD

+0

나는 @@ 버전으로 무엇을하려했는지 이해하지만 3 = 3이 그들에게 말한 것은 무엇인가? 내 오류 포수도 IP 주소를보고합니다. 표를 추가하고 그와 같은 상황에서받은 IP를 추가 한 다음 해당 사용자를 Google 또는 다른 사용자에게 다시 소개하는 것입니다.이 방법이 효과적인지 또는 단지 무의미한 운동인지 ? – HPWD

+1

동어 반복 (예 : 3 = 3)을 추가하여 가능한 모든 데이터베이스에서 결과를 얻으려고합니다. 그러나 그들은 AND 대신에 OR을 사용해야 할 수도 있기 때문에 아마도 모든 스마트만큼 똑똑하지는 않습니다! ' '을 사용하는 한 SQL 주입 공격 (적어도 SELECT에서는 INSERT 및 UPDATE에 대한 XSS 공격에 여전히 취약 할 수 있습니다)으로부터 안전해야합니다. 여전히 매개 변수의 유효성을 검사하여 오류가 발생하기 전에 트랩 할 수 있도록하는 것이 좋습니다.이 매개 변수를 트랩하려면 ''을 시도하거나 isNumeric()을 사용하십시오. 통보 받는다. –

답변

8

예, 누군가가 악의적 인 것으로 보입니다.

cfqueryparam을 사용하면 SQL 주입 공격을 방지 할 수 있습니다. (그리고 CF를의) 의심, 벤를 요청하는 경우 :

SQL Injection Attacks, Easy To Prevent, But Apparently Still Ignored

예 :

<cfquery ...> 
    SELECT * 
    FROM  Products 
    WHERE  SKU=<cfqueryparam value="#URL.SKU#" cfsqltype="CF_SQL_INTEGER"> 
</cfquery> 
+1

가장 정확하고 정확한 답변입니다 (예 : 사용 예, Ben 's 블로그 링크 및 livedocs). 다른 두 가지 대답은 기술적으로 정확합니다. – HPWD

2

)

+0

typo ... * forget –

0

그래 누군가는 SQL 주입을 시도했다. 코드에서 sku 변수를 올바르게 검사하면 아무런 해가 없습니다.