phpbar.de logo

Mailinglisten-Archive

[php] AW: [php] AW: [php] WHERE Klausel transportieren

[php] AW: [php] AW: [php] WHERE Klausel transportieren

Tim Hildebrandt TConnect_(at)_gmx.net
Sat, 1 Jul 2000 16:20:28 +0200


>
> Das direkte Ausführen des übergebenen Stings als Query ist
> brandgefährlich.
>
> So erlaubst du jedem Surfer, beliebige Queries zu schicken. Ich
> könnte z.B.
> folgende Anfrage schicken:
> "free like 'x'; DROP DATABASE db_name"



Frage: Wie soll denn der User aufgrund des Spaltennamens auf den
Datenbanknamen kommen?




> Du baust den String seelenruhig in deine Query ein und mit etwas
> rumprobieren habe ich deine Datenbank ziemlich schnell zerhackt.
>
> Grundregel für Sicherheit von Web-Applikationen: Niemals übergebene
> Parameter direkt und ungeprüft ausführen (auch nicht, wenn sie
> nur Teil der
> Query sind).
>
> Warum übergibst du nicht einfach nur das "j" als parameter, das löst dann
> auch die Probleme mit dem en-/decoden.

ganz einfach: Weil dies nur eine Dimension ist. Der gesamte String kann
durchaus
bis zu 15 unterschiedliche Komponenten enthalten. Das in jeweiligen
Parametern
zu speichern ist etwas zu umständlich.

Zu Deinem Einwand: Auf die Datenbank kann via Query nur von denjenigen IP-
Adressen zugegriffen werden, die für diesen Zugriff auch registriert sind.
Meint: Der Webserver, von dem die Requests geschickt werden muß im gleichen
Subnet wie der DB-Server stecken. Somit wird der normale Surfer kaum eine
Chance haben, eine normals Query abzusetzen.

Weiterhin ist das Modul, das letztendlich die mysql_query ausführt,
gekapselt.
Meint: Dieses Modul ist nicht direkt anzusprechen, weil der Surfer immer
nur das Hauptmodul sieht und nur dieses Hauptmodul weiß, wo sich die
jeweiligen
Unterbereiche befinden. Das Hauptmodul testet mit
jedem Zugriff die jeweilige Zugriffberechtigung und gibt dann erst an das
Untermodul weiter. Zudem wird jedes Untermodul nur dann ausgeführt, wenn es
direkt vom Hauptmodul
her aufgrufen wurde. Ich glaube, die beiden Aspekte sollten sicher genug
sein.

Aber dennoch! Meine Überlegungen gehen tatsächlich dahin, eine Art
Zwischentabelle Anzulegen, in der solche Informationen gespeichert werden
können.
Ist vielleicht doch besser.

Danke für die Anregungen.

Tim



> Gerald.
>



php::bar PHP Wiki   -   Listenarchive