YapfHoofdpagina | Info | Hulp | FAQ (veelgestelde vragen) | Speciale pagina's | Aanmelden


Printervriendelijke versie | Voorbehoud | Privacybeleid

Beveiliging in postgresql

Uit Yapf

Categroy:PostgreSQL

Inhoud

Intro

In dit artikel worden veiligheidstips voor PostgreSQL verzameld.

PHP

Injectie

De simpelste manier om de data die vanuit PHP naar de database wordt gestuurd te beveiligen is om gebruik te maken van pg_query_params(). Die functie accepteert een query plus een serie parameters die in de query moeten worden gezet. In de query kan met behulp van $1, $2 etc worden aangegeven welke van de parameters op die plek moet worden gebruikt. De database herkent zelf welk type de parameter hoort te zijn en escapet alles volgens de eisen van de database. Daarmee is het onmogelijk om een fout te maken in de beveiliging.

Databaseontewerp

Stored functions

In postgreSQL kun je stored functions zo instellen dat PostgreSQL ze altijd uitvoert onder de rechten van de maker van de functie, in plaats van de rechten van de aanroeper. In een stored function kun je andere stored functions aanroepen die dan de rechten van de eerste functie als 'aanroeper' rechten meekrijgen.

In PostgreSQL kunnen tabellen en functies in verschillende schema's worden onderverdeeld. Als je niet aangeeft in welk schema een functie staat, dan gaat PostgreSQL zoeken in verschillende schema's en pakt de eerste die hij tegenkomt. Welke schema's hij doorzoekt wordt bepaald in het schema-searchpath.

Het gevaar hiermee is dat een andere db gebruiker zelf een gelijknamige functie kan maken in een ander schema, en bij het uitvoeren van jouw stored function een ander schema-searchpath op kan geven waardoor PostgreSQL zijn functie eerder tegenkomt dan de functie die jij bedoelt.

De oplossing:

Geef bij het aanroepen van stored functions vannuit andere storedfunctions altijd het schema op waarin de function moet staan. Als je dat doet dan gaat PostgreSQL niet op zoek en kan ook geen andere vinden. Een mindere oplossing, maar wel een beter vangnet, is om in elke stored function als eerste het schema-searchpath in te stellen op alleen jouw schema('s). Dat overschrijft eventueel van buitenaf gezetten searchpaths en ook dan gaat PostgreSQL niet op zoek.

Waar moet je aan voldoen om risico te lopen: - Andere gebruikers moeten schema's kunnen maken, of rechten hebben om functies te maken in bestaande schema's - Jij moet vergeten om op te geven in welke schema de functies die jij gebruikt gezocht moeten worden.

Teruggeplaatst van "http://www.yapf.net/index.php/Beveiliging_in_postgresql"

Deze pagina is 274 maal bekeken. Deze pagina is het laatst bewerkt op 26 dec 2008 om 09:33.


Zoeken

Bladeren
Hoofdpagina
Gebruikersportaal
In het nieuws
Recente wijzigingen
Willekeurige pagina
Hulp
Bewerken
Brontekst bekijken
Hulp bij bewerken
Paginaopties
Overlegpagina
Opmerking toevoegen
Printervriendelijke versie
Pagina-informatie
Paginageschiedenis
Verwijzingen naar deze pagina
Verwante wijzigingen
Mijn pagina's
Aanmelden / registreren
Speciale pagina’s
Nieuwe pagina's
Bestandslijst
Statistieken
Foutrapporten
Meer …