这个PostgreSQL查询容易受到攻击吗?

时间:2012-11-05 15:54:09

标签: php security postgresql

使用pg_escape_literal PHP函数,我按如下方式转义用户输入数据:

  <?php
  $dbconn = pg_connect('dbname=foo');
  $escaped = pg_escape_literal($_GET['name']);
  pg_query("INSERT INTO participants (name) VALUES ({$escaped})");
  ?>

刚接触PostgreSQL,我的问题是:

  • 根据此代码,有没有办法实现SQL注入?
  • 此代码中是否还有其他未处理的漏洞?

使用PHP 5.4和PostgreSQL 9.2。

2 个答案:

答案 0 :(得分:5)

由于您不信任任何用户输入并且相应地将其转义,因此没有注入。 此外,您可以使用prepared statements确保不会忘记任何转义,并为句子采用正确的数据类型。

请记住,如果你只忘记一次逃脱,那么你的整个系统都会受到损害,尽管它可能会被遗漏。

答案 1 :(得分:1)

这是用于转义查询并确保sql注入攻击不起作用的推荐方法。

如果你是特别偏执,或者只是想保证安全,你也可以使用正则表达式来排除不需要的字符并对数据进行长度检查。