Robert Krüger: SELECT Statement über URL weitergeben?

Hi Leute,

ich muß aus einer Website ein mühsam zusammengebautes SELECT-Statement an die näxte weitergeben - da laufen vorher einige viele Routinen Fuzzy-Logic und so weiter - schlußendlich erhalte ich ein SELECT-Statement das die Gewünschte Ausgabe bringt - gebe ich jetzt das Statement an die Nachfolgende Seiten weiter (die dieses Statement auch brauchen), so hab ich doch eine Sicherheitslücke geöffnet. Da die folgenden PHP-Skripte das Statement auch ausführen. So könnte sich ja jeder meiner Datenbank bemächtigen.

Also übergebe ich nur den Teil hinter dem 'WHERE' und überprüfe ob das Statement ein ';' enthält (weil von mir aus ist keins drin!).

Reicht das?

Wie macht Ihr sowas? Das ganze Datenbankresult per URL übergeben? Oder ist das der Pkt. wo ich komplett auf eine Sessionmanagmentsystem umstellen muß?

Für eure Vorschläge dankend. Robert Krüger

  1. Hi Leute,

    Hallo auch,

    So könnte sich ja jeder meiner Datenbank bemächtigen.

    richtig, deshalb würd ichs _gar_ nicht über die url weitergeben, auch nicht teilweise. du könntest uU. den sql-string verschlüsseln, dann fällts zumindest nicht mehr auf, dass das ein select statement ist. ist aber dann arbeit, die man selber machen muss und somit nicht getestet :-)

    einfacher ist wahrscheinlich die verwendung von sessions, speichere den string in einer session und übergib nur die session http://www.php.net/manual/de/ref.session.php (hoffentlich hab ich das link-tag richtig verwendet). das gilt afaik als sehr sicher.

    lg,
    Michael

  2. Hi Robert,

    ich würde einfach die Variable, in die Du das SQL-Statement geschreiben hast übergeben.
    Bsp.: $SQL = "SELECT * FROM tabelle;"
    Die übergibst Du entweder über die URL, da kann eigentlich noch keiner an Deine DB, weil Du ja keine Datenbankzugriffsdaten drin hast, oder Du machst gleich ein Formular mit einem Hidden-Feld und übergibst die Variable so.
    In Deiner neuen Seite kannst Du ja dann die $SQL ausführen und schon hast Du es.
    Oder hab ich es jhetzt zu einfach gemacht?

    Björn