3

使用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。

4

2 回答 2

5

由于您不信任任何用户输入并相应地对其进行转义,因此其中没有注入。此外,您可以使用准备好的语句来确保不会忘记任何转义,并为句子采用正确的数据类型。

请记住,如果您只忘记了一次转义,那么您的整个系统就会受到损害,尽管它可能会被其他所有转义。

于 2012-11-05T15:59:03.807 回答
1

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

如果您特别偏执,或者只是想安全起见,您还可以执行正则表达式来清除不需要的字符并在转义数据之前检查数据的长度。

于 2012-11-05T15:58:01.747 回答