пятница, 25 марта 2011 г.

PostgreSQL Защита от sql инъекции на php (pg_escape_string)

Защититься от sql инъекции достаточно просто, но последствия от взлома могут быть намного серъезней. Поэтому не пренебрегайте базовыми средствами защиты)

Для безопастного использования текстовых переменных в SQL коде в php есть функция аналогичная для MySQL (mysql_real_escape_string), но только для PostgreSQL - pg_escape_string

Для текстового поля:

было:
$sql = 'SELECT * FROM users WHERE login='.$login.' AND password='.$password.';';
стало:
$sql = 'SELECT * FROM users WHERE login=\''.pg_escape_string($login).'\' AND password=\''.pg_escape_string($password).'\';';

Для целого, все еще проще - приводите тип перед использованием:
$post_id = (int) $post_id;
$sql = 'SELECT * FROM posts WHERE post_id ='.$post_id.';';