Michi: altes PHP Script - Mysql insert etc. automatisch auf neuen Stand bringen

Hi, ich hab mal wieder ein altes PHP Script ausgegraben. Beinhaltet u.a. Datenbank auslesen und einlesen. Habe damals nicht über mögliche Sonderzeichen und injections nachgedacht.. ja, ja ich war jung und ... mmh ich war einfach jung.

Daher die Frage gibt es eine einfache Möglichkeit quasi automatisch Funktionen wie addshlashes() bzw. mysql_real_escape_strings etc einzufügen - search and replace funktioniert ja leider nicht wirklich…

Für Ideen wäre ich dankbar, würde ungern die kompletten Scripte neu schreiben… Grüße Michi

  1. Hallo

    Daher die Frage gibt es eine einfache Möglichkeit quasi automatisch Funktionen wie addshlashes() bzw. mysql_real_escape_strings etc einzufügen - search and replace funktioniert ja leider nicht wirklich…

    Nein. Erstens ist addslashes falsch und zweitens behandelt, wie der Name schon sagt, mysql_real_escape_string nur Strings. Zahlenwerte sollen nicht mit dieser Funktion behandelt werden. Die Identifizierung, in welcher Variable ein String oder eben ein anderer Datentyp steckt, wirst du nicht zuverlässig automatisieren können.

    Zuallerletzt und drittens musst du über kurz oder lang die PHP-Bibliothek zum Zugriff auf eine MySQL-Datenbank wechseln, weil die alte Bibliothek mit den mysql_-Funktionen ab PHP7 abgeschafft ist. Von der Funktionsweise vergleichbar sind die mysqli_-Funktionen, auch wenn sich die Parameterreihenfolge bei den Funktionsaufrufen umkehrt. An der Stelle kommst du eh nicht mehr um die Prüfung deiner Quelltexte herum. Das muss aber — je nach Qualität des restlichen Codes — …

    Für Ideen wäre ich dankbar, würde ungern die kompletten Scripte neu schreiben…

    … nicht zwingend im „kompletten neu schreiben“ enden.

    Tschö, Auge

    --
    Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
    Toller Dampf voraus von Terry Pratchett
  2. Hallo Michi,

    Daher die Frage gibt es eine einfache Möglichkeit quasi automatisch Funktionen wie addshlashes() bzw. mysql_real_escape_strings etc einzufügen - search and replace funktioniert ja leider nicht wirklich…

    Lieber nicht, da baust du dir höchstwahrscheinlich Fehler und wieder Sicherheitslücken ein. Geh lieber durch das ganze Script durch und passe das von Hand an – oft fallen dir sicher noch Dinge auf, die auch noch gleich mit verändern kannst.

    Für Ideen wäre ich dankbar, würde ungern die kompletten Scripte neu schreiben…

    Sieh es doch als Chance, da mal aufzuräumen. Wenn ich mir Dinge angucke, die ich ganz am Anfang meiner Zeit mit PHP gemacht habe, würde ich die auch neu schreiben, wenn ich sie noch benötigen würde – wahrscheinlich werde ich das in wenigen Jahren auch über das, was ich heute verbreche, sagen – so ist nun mal der Lauf der Dinge...

    Gruß
    Julius

  3. spar dir doch den ganzen Escape-Mist und nimm ne Zwischenschicht die das für dich macht: z.B. PDO mit Prepared Statements. Klar musst du dafür halt mal das ganze Script durchgehen, so ist das beim Refactoring.