2013-07-30 2 views
3

현재 PostGIS DB를 보유하고 있으며 기본 작업을하고 있습니다. 그러나 나는 pg_query을 사용하여 데이터베이스에 직접 삽입하고 있습니다. pg_query_params을 사용하여 SQL 주입을 방지하는 것이 권장되었지만이를 구현하는 방법을 잘 모릅니다. 아래는 사이트 위치에 대한 내 현재 insert 성명의 예입니다. 예를 들어,이 예제에서는 pg_query_params을 어떻게 활용합니까? 나는 더 많은 보안을 구현해야한다는 것을 알고 있지만 그것은 출발점이다.DB 보안 강화 INSERT

편집 : drupal 양식 API를 사용하려고했지만 두통이 컸습니다. 나는 이것이 자동으로 많은 것을 할 것이라는 것을 깨닫는다.

$sql = "INSERT INTO sites_tbl (river_id ,sitename ,the_geom) VALUES ('$_POST[river_id]','$_POST[sitename]',st_geomfromtext('POINT($geomstring)',27700))"; 
$result = pg_query($sql); 
+0

이 방법은 스택 오버 플로우에 더 적합하며이 쿼리는 SQL 삽입에 취약합니다. – rook

+1

나는 그것을 거기에 넣었다. 그리고 나는 그것을 여기에 넣으라고 들었다. 내 질문에 쿼리에 SQL 주입을 막으려 고하고있다 .... – Tom

답변

5

매개 변수가 아닌 문자열을 사용하고 있으므로 예제는 SQL 삽입에 취약합니다. pg_ 기능을 피하는 것이 가장 좋습니다. 귀하의 경우에는 두 가지 당신이 고려해야 할 필요가있다 :

  • 은 드루팔 API 알아보기 (이 코드의 일관성을 위해 가장 좋은 것입니다 드루팔을 사용하는 것을 고려

또는

일반적으로 PDO 외에도 저장 프로 시저를 사용합니다. 불행히도 너무 많은 코드가 있기 때문에 관리 할 수없는 경우가 있습니다. 내 조언은 최대한 많은 저장 프로 시저를 사용하는 것입니다.

+0

그래서 그냥 매개 변수를 활용하는 삽입을 변환 수 없습니까? 나는 drupal form api를 지금 연구 중이다. – Tom

+0

나는 pg_query_params에 대한 페이지를 추가했다. –