2013-07-30 65 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

這更適合於stackoverflow,這個查詢也容易受到SQL注入的影響。 – rook

+1

我把它放在那裏,然後我被告知把它放在這裏。我的問題確實說我正在尋找防止SQL注入查詢.... – Tom

回答

5

由於您使用的是字符串而非參數,因此您的示例容易受到SQL注入的影響。最好避免使用pg_函數。你的情況也有,你需要考慮兩件事情:

  • 瞭解Drupal的API(考慮您正在使用的Drupal,這將是最好的代碼的一致性

通常情況下,除了PDO之外,還使用存儲過程,但不幸的是,由於代碼太多,所以這種方法不可管理。我的建議是儘可能多地使用存儲過程。

+0

所以我不能只是轉換插入利用參數?我正在研究drupal form api – Tom

+0

我已經添加了pg_query_params的頁面 –