2010-12-15 6 views
10

"오리처럼 걷고 오리처럼 들린다"는 원칙에 따라 아마존의 SimpleDB가 지원하는 SQL 맛보기 쿼리는 SQL 주입 유형 공격에 취약해야합니다. 다음은 공격자의 입력 변수 $ 범주에 가고, 그가 열 이름을 추측 할 수있는 것으로 가정 간단한 예제 : 당신이 홈 게임을하는 경우SQL 인젝션에서 Amazon SimpleDB를 보호하려면 어떻게합니까?

$category = "Clothes' OR Category LIKE '%"; 
$results = $sdb->select("SELECT * FROM `{$domain}` WHERE Category = '$category'"); 

는,이 라인은 현재 위치에서 할 수 있습니다 Amazon의 PHP SDK (1.2)의 샘플 코드에있는 html-sdb_create_domain_data.php 파일의 119 번째 줄 대체.

Amazon은 quoting rules을 게시하며 "또는 '사용자 입력이 두 배로 늘도록하는 것을 쓸 수 있다고 생각하지만 ... 항상 탈출은 기본적으로 무기 경쟁이며 매개 변수화가 내 무기라는 것을 이해했습니다. 선택, 예를 들어, 사용하는 경우 MySQL은.

SimpleDB의 쿼리를 방어하기 위해 사용하는 다른 사람들은 무엇인가?에 대해 보호 할 수있는 유일한 것은 외출 추가 쿼리 데이터 그래서

답변

8

SimpleDB를 선택 작업이 아닌 파괴 공격자.

사용자 inp를 위생 처리하는 솔루션 sub-select와 복합 문이 허용되지 않기 때문에 ut를 쿼리에 적용하는 것은 SimpleDB에서 매우 쉽습니다. 그래서 그것은 실제로 군비 경쟁이 아닙니다. 시퀀스의 길이가 홀수 인 경우 입력의 하나 이상의 인용 문자 시퀀스가 ​​이스케이프되어야합니다.

관련 문제