提高DB INSERT的安全性

时间:2013-07-30 08:20:14

标签: sql-injection database

目前,我有一个PostGIS数据库,我有基础工作。但是,我使用pg_query直接插入数据库。我被建议使用pg_query_params来帮助防止SQL注入,但我不确定如何实现它。以下是我当前insert网站位置声明的简要示例。例如,我如何在此示例中使用pg_query_params?我知道我必须实施进一步的安全性,但这是一个起点。

编辑:我打算使用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);

1 个答案:

答案 0 :(得分:5)

因为您使用的是字符串而不是参数,所以您的示例很容易受到SQL注入的攻击。最好避免pg_功能。在您的情况下,您需要考虑两件事:

  • 了解Drupal API(考虑到您使用的是Drupal,这对于代码一致性来说是最好的

通常,除了PDO之外,您还使用存储过程,但遗憾的是,由于代码太多,有时这是不可管理的。我的建议是尽可能多地使用存储过程。