Moses: Fehlermeldung unterdrücken?

Hallo,
kurze Frage ist es möglich die MySql Fehlermeldungen zu unterdrücken?
Also dass mir auf einer Seite z.B. nicht angezeigt wird:
1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near
'blable'
und dann die ganze MySql Abfrage.

sondern stattdessen einfach eine Leereseite - sprich Fehler -> Ausführung abgebrochen.

Ich finde es nämlich ein gehöriges Sicherheitsrisiko, wenn mir dann die ganze Abfrage angezeigt wird also quasi der Aufbau und die Benennungen der Datenbank/Tabellen.

Danke und Grüße,
Moses

  1. Hallo

    das hat erstmal nichts mir MySQL zu tun sondern wie dein Error Reporting des Webserver eingestellt ist.
    Das gleiche gilt auch für PHP.

    Besser wäre es natürlich du lieferst saubere Scripte ohne Fehler oder machst eine Fehlerbehandlung.

    Ansonsten Stichwort
    error_reporting in deiner Webserver Konfiguration

    viele Grüße
    hawk

    1. Hallo nochmals,

      das war glaube ich etwas falsch was ich eben geschrieben habe.

      Du kannst deine MySQL Fehler mit dem @ Zeichen vor
      mysql_...() also etwa
      @mysql_fetch_arry() unterdrücken
      aber wie gesagt, besser saubere Scripte

      viele Grüße
      hawk

      1. aber wie gesagt, besser saubere Scripte

        Hi,
        danke erstmal.
        Saubere Scripte ist ja ganz nett, nur wenn ich einen Link habe wie:
        naechste_seite.php?id=2
        und ein findiger Benutzer tippt statt id=2 id=irgendwas ein - dann gibt es natürlich einen Datenbank Fehler und der sollte nicht ausgegeben werden.

        Grüße,
        Moses

        1. Hallo,

          und ein findiger Benutzer tippt statt id=2 id=irgendwas ein

          Deshalb sollte man solche Eingaben auch vorher überprüfen (zb. mit is_numeric() und eventuell auch noch den Bereich mit > und <) und gegebenenfalls eigene Fehlermeldungen ausgeben, oder die Eingabe ignorieren.

          Gruß,

          Fay

        2. Mahlzeit Moses,

          Saubere Scripte ist ja ganz nett, nur wenn ich einen Link habe wie:
          naechste_seite.php?id=2
          und ein findiger Benutzer tippt statt id=2 id=irgendwas ein - dann gibt es natürlich einen Datenbank Fehler

          Bei meinen Skripten nicht ...

          und der sollte nicht ausgegeben werden.

          Dann verursache ihn gar nicht erst. Merke: ALL INPUT IS EVIL!

          Du MUSST jegliche Eingaben, die von Benutzerseite kommen (und dazu gehören insbesondere GET- und POST-Parameter), auf gültige Werte prüfen, bevor Du sie verarbeitest. Außerdem solltest Du sämtliche Variableninhalte kontextgerecht behandeln, wenn Du sie verwenden (z.B. an die Datenbank weiterreichen oder als HTML ausgeben) willst - in PHP wären dazu z.B. die Funktionen mysql_real_escape_string() bzw. htmlspecialchars() geeignet.

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        3. Hi,

          Saubere Scripte ist ja ganz nett, nur wenn ich einen Link habe wie:
          naechste_seite.php?id=2
          und ein findiger Benutzer tippt statt id=2 id=irgendwas ein - dann gibt es natürlich einen Datenbank Fehler und der sollte nicht ausgegeben werden.

          wenn das Script dies nicht mit einer mit Statuscode 404 ausgelieferten Fehlerseite quittiert, solltest Du es überarbeiten oder wegschmeißen.

          freundliche Grüße
          Ingo

        4. dann gibt es natürlich einen Datenbank Fehler und der sollte nicht ausgegeben werden.

          Das ist ganz allein dein Bier. Kümmere dich einfach um eine angemessene Behandlung des Fehlers. Angemessen im Kontext, so wie dir Ingo Turski schon ein Beispiel gegeben hat. Und validiere die User-Eingaben!

          Ciao, Frank

  2. Hallo,

    Ich finde es nämlich ein gehöriges Sicherheitsrisiko, wenn mir dann die ganze Abfrage angezeigt wird also quasi der Aufbau und die Benennungen der Datenbank/Tabellen.

    Da stimme ich dir zu. Allerdings ist dies kein Standardverhalten; derjenige, der die Applikation (nicht die Datenbank) programmiert hat, gibt diese Daten explizit aus. Dies kannst du natürlich verhindern.

    Gruß
    Christoph

    1. »

      Da stimme ich dir zu. Allerdings ist dies kein Standardverhalten; derjenige, der die Applikation (nicht die Datenbank) programmiert hat, gibt diese Daten explizit aus. Dies kannst du natürlich verhindern.

      Gruß
      Christoph

      Hi,
      danke für den Tipp dachte ichm ir auch schon, daß das an der Applikation liegt. Irgendeinen Tipp nach was ich suchen muß um diese Ausgabe zu finden und dadurch zu verhindern (ich hoffe Deine Glaskugel ist in gutem Zustand aber vielleicht gibt es ja den ein oder anderen BEgriff der mir weiterhelfen könnte.... ;-)

      Grüße,
      Moses

      1. Hallo,

        Such mal im Quellcode nach mysql_errno bzw. mysql_error, dann solltest du fündig werden.

        Gruß,

        Fay

        1. Hallo,

          Such mal im Quellcode nach mysql_errno bzw. mysql_error, dann solltest du fündig werden.

          Gruß,

          Fay

          Danke habe ich gefunden und konnte die Ausgabe stoppen.
          Jetzt muß ich wohl das ganze Script erstmal gründlich überarbeiten.... :-(

          Grüße,
          Moses