使用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,我的问题是:
使用PHP 5.4和PostgreSQL 9.2。
答案 0 :(得分:5)
由于您不信任任何用户输入并且相应地将其转义,因此没有注入。 此外,您可以使用prepared statements确保不会忘记任何转义,并为句子采用正确的数据类型。
请记住,如果你只忘记一次逃脱,那么你的整个系统都会受到损害,尽管它可能会被遗漏。
答案 1 :(得分:1)
这是用于转义查询并确保sql注入攻击不起作用的推荐方法。
如果你是特别偏执,或者只是想保证安全,你也可以使用正则表达式来排除不需要的字符并对数据进行长度检查。