2011-08-11 3 views
3

일반적으로 응용 프로그램에서 정수 ID를 사용하지만,이 한 조각의 dev에 대해서는 텍스트 필드 (태그 이름)를 조회합니다.이 Coldfusion 쿼리 SQL 주입 증명입니까?

저는 cfqueryparam을 사용하지만 텍스트 필드라고 생각하면 SQL 주입 공격에 취약 할 수 있으며 그렇다면 다른 사람들이 SQL 명령 문자열을 지루하게 검색하는 것 이외의 다른 방법을 생각해보십시오.

SELECT tagId -- etc etc 
FROM tag 
WHERE tagName = <cfqueryparam cfsqltype="cf_sql_varchar" maxlength="50" value="#arguments.tagName#" /> 

감사

+1

실제로 대부분의 경우 ColdFusion과 PHP 문자열을 사용하면 두 시스템 모두 "마법 인용 부호"를 사용하기 때문에 정수보다 주입하는 것이 어렵습니다. 그러나 마술 따옴표로 삽입하는 것이 불가능하지 않으므로 다른 사람들이 이미 말했듯이 cfqueryparam을 사용해야합니다. –

답변

8

<cfqueryparam>을 사용하고 있어도 안전합니다. 그것이 태그의 기능입니다. 이 값을 텍스트 (또는 cfsqltype이 무엇이든지간에)로 보내면 이 아닌 명령이 실행됩니다.

+0

좋습니다. - 고마워요. 제가 찾고있는 것이지요. cfqueryparam이 명령 실행을 방해한다는 사실. 그것이 varchar params의 경우인지 확실하지 않았습니다. 그것이 좋은 것을 아는 것이 좋다. – Cheeky

0

당신이 CFQUERYPARAM을 사용하지 않은 경우, 당신은 취약 할 것 :

내 쿼리 같이 보입니다.

cfqueryparam을 사용하면 SQL 주입에 대해 걱정할 필요가 없습니다.

주입 공격을 가하고 직접보십시오.

6

그렇습니다 ... SQL 주입을 수행하는 것은 매우 어려울 것입니다. CFQUERYPARAM은 SQL 쿼리를 삽입하는 것을 거의 불가능하게 만듭니다. 그러나 모든 형태의 공격에 대해 100 % 효과적인 것은 아무것도 없음을 기억하십시오.

0

과 함께 cfqueryparam을 사용하면 XSS를 강력하게 보호하고 악의적 인 해킹 시도를 차단할 수 있다고 들었습니다.

대부분의 ColdFusion 웹 개발자는 이제 마지막으로 CFQUERYPARAM를 사용하고, 해당 태그가 도입 된 이후 은 약 10 년을 촬영하고있다하지만 난 더 늦게 결코보다는 같아요. cfqueryparam은 대부분 형태의 SQL 주입을 방지하지만 모두는 사용할 수 없습니다. 또한 스크립팅 (XSS) 공격을 교차 사이트로 처리하지도 않습니다. 사이트가 얼마나 작은 지 상관 없으며 호스팅되는 곳의 이 공격 경로를 경험하게됩니다. Portcullis 설치 및 구성에 5 분 정도 걸릴 수 있습니다. 완벽한 것은 없습니다, 하지만 Portcullis는 견고한 실적을 가지고 있습니다. 단지 Google뿐입니다. 따라서 ColdFusion 기반 사이트 을 사용해서는 안 될 이유가 없습니다. 또한 http://www.codfusion.com/blog/post.cfm/portcullis-2-0-released

, 당신은 존 메이슨, 내리 닫이 쇠창살 문의 저자가 제시 CFMeetup: Warning, your site is under attack를보고 할 수 있습니다.

+0

방금 ​​보았습니다. Portcullis는 블랙리스트 키워드로 스코프 스캔을 수행하고 악의적 인 사용자도 차단합니다. – Henry

+0

블랙리스트는 적절한 쿼리 매개 변수보다 강력한 방어 수단이 아닙니다.Portcullis가 좋은 코딩 방법보다 강력한 보호 장치라고 들었다면 잘못 들었거나 잘못된 정보를주었습니다. –

+0

예, 답을 수정했습니다. Portcullis와 함께'cfqueryparam'을 사용할 때 더 강하다고 말했어야합니다 ... – Henry