security: escaping user-supplied data - Mailing list pgsql-sql

From Jason Uhlenkott
Subject security: escaping user-supplied data
Date
Msg-id 38028148.8066E930@uhlenkott.net
Whole thread Raw
Responses Re: [SQL] security: escaping user-supplied data  (Herouth Maoz <herouth@oumail.openu.ac.il>)
List pgsql-sql
I am writing a C program that will collect data from various untrusted
sources, and put it in a postgresql database by PQexec'ing an INSERT
INTO statement.

The statements I generate are usually of the form:
INSERT INTO foo (bar, bas) VALUES ('abc', 'def');
but the 'abc' and 'def' come from an untrusted source, so if they supply
a string like "def'); delete from foo; '" they can make me do this:
INSERT INTO foo (bar, bas) VALUES ('abc', 'def'); delete from foo; '');

What do I need to do to prevent this?  My current plan is to prepend a
backslash to every single-quote, backslash, and semicolon in the
untrusted string.  Are there any other special characters I should watch
out for?  Is it possible to do something evil despite your special
characters being prepended with a backslash?


pgsql-sql by date:

Previous
From: "Saltsgaver, Scott"
Date:
Subject: Reporting errors when a rule fails.
Next
From: Tom Lane
Date:
Subject: Re: [SQL] Question on Inheritance and Primary Keys.