Skip site navigation (1) Skip section navigation (2)

Re: How to create a new Table in prostgresql from a

From: Frank Finner <postgresql(at)finner(dot)de>
To: "Todd Lewis" <lewis-todd(at)comcast(dot)net>
Cc: pgsql-php(at)postgresql(dot)org
Subject: Re: How to create a new Table in prostgresql from a
Date: 2004-10-02 09:46:07
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-php
On Mon, 16 Aug 2004 19:41:17 -0500 "Todd Lewis" <lewis-todd(at)comcast(dot)net> sat
down, thought long and then wrote:

> Just a followup question.
> I'm fairly new to using PHP and pg. Security wise how could I limit a request
> such as this? I'm assuming that if you have given a PHP user the ability to
> create tables, the user also has the ability to truncate and delete tables as
> well. 

A database user has not much in common with a PHP user (or a UNIX- or other
system user). The tables will be created with the database user you have
connected with (if you use authentication other than trust or ident, see
pg_hba.conf for details).

So if you create tables within PHP, you create them as the connecting database
user, and of course the creator may destroy them as well.

But if you have a database, in which the tables are owned by user A and you
connect with user B, user B may create tables owned by himself, but usually may
not drop tables owned by user A, if he has not explicitly been granted so.

What I do is: I have a database, in which all tables are owned by user A (a
superuser) and user B (the PHP connecting user) has the right to read, write,
update the tables, so he can work with them. But user B is not able to drop a
table of user A. User B, however, is allowed to create and drop his own tables,
if he likes. 

If you connect every PHP user as a different database user, no database user is
able (if not explicitly granted) to drop other usersĀ“ tables. If not granted so,
he is not even able to touch them (he could see their existence, however).

Frank Finner

Memory follows memory, memory defeats memory; some things are banished
only into the realms of our rich imaginings  -  but this does not mean
that they do not or cannot or will not exist - they exist! They exist!
                              (M. Moorcock, "The Revenge Of The Rose")

In response to

pgsql-php by date

Next:From: alagu rajDate: 2004-10-12 06:12:28
Subject: Call to undefined function: pg_connect().
Previous:From: Joshua D. DrakeDate: 2004-10-01 14:46:39
Subject: Re: plPHP download?

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group