Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonderzeichen Problem /"

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • moevydotnet
    hat ein Thema erstellt Sonderzeichen Problem /".

    Sonderzeichen Problem /"

    Hi @ all,
    ich möchte einen String -> ein "Hund" ist "rot" <- in der Datenbank Speichern.

    In der Datenbank steht jedoch vor jedem SOnderzeichen "%&() usw. jeweils ein /. Der String sieht in der DB so aus: ein /"Hund/" ist /"rot/"

    Ich übertrage von Flex die Daten auf eine .php Datei. Die .php Datei speichert mir dann die Datensätze. In Flex sieht der String noch richtig aus, d.h. das Problem muss in der .php Datei liegen.

    Hier findet Ihr die Datei: addQuestion.php - questiondatabase - Google Code

    Hat jemand eine Idee warum dieses / hinzugefügt wird?

    Vielen Dank im vorraus...

    Gruss Michael

  • moevydotnet
    antwortet
    Zitat von Wolla Beitrag anzeigen
    Deswegen haut man das ja wieder weg, siehe oben.
    Ok... Ich machs nun mal generell weg... Wenn ich dann noch probleme hab dann mach ich das so wie oben beschrieben.... Ist halt aufwendiger

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Wozu soll das gut sein automatisch ein \ vor bestimmte zeichen zu setzen.... Sehe da keinen vorteil nur nachteile...
    Deswegen haut man das ja wieder weg, siehe oben.

    Einen Kommentar schreiben:


  • moevydotnet
    antwortet
    Zitat von Wolla Beitrag anzeigen
    Magic Quotes is eine Servereinstellung, bei der dir vor bestimmte Zeichen automatisch ein Backslash hingemalt wird. Das hat mit Sql-Injections absolut nichts zu tun.
    Man wehrt sich dagegen, dass man den Parameter abfragt und dann die automatischen Backslashes mit stripslashes() wieder weghaut.

    Wenn dein User '\' selbst eingibt, dann hast du bei MQ '\\' im String. Wenn du diesen String dann wieder zum Ändern ins Eingabefeld ausgibst, und der user sendet die Daten wieder, dann hast du '\\\\' und das nimmt kein Ende.

    Vor dem Speichern escapest du die Daten mit mysql_real_escape_string, und nach dem Wiederauslesen gibst du die Daten aus mit htmlspecialchars().
    Mhh.... Eigentlich möchte ich gar keine \ haben... Nornale sonderzeichen und umlaute reichen....

    Wozu soll das gut sein automatisch ein \ vor bestimmte zeichen zu setzen.... Sehe da keinen vorteil nur nachteile...

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Magic Quotes is eine Servereinstellung, bei der dir vor bestimmte Zeichen automatisch ein Backslash hingemalt wird. Das hat mit Sql-Injections absolut nichts zu tun.
    Man wehrt sich dagegen, dass man den Parameter abfragt und dann die automatischen Backslashes mit stripslashes() wieder weghaut.

    Wenn dein User '\' selbst eingibt, dann hast du bei MQ '\\' im String. Wenn du diesen String dann wieder zum Ändern ins Eingabefeld ausgibst, und der user sendet die Daten wieder, dann hast du '\\\\' und das nimmt kein Ende.

    Vor dem Speichern escapest du die Daten mit mysql_real_escape_string, und nach dem Wiederauslesen gibst du die Daten aus mit htmlspecialchars().

    Einen Kommentar schreiben:


  • moevydotnet
    antwortet
    Zitat von GTA26 Beitrag anzeigen
    ich denke es ist serverseitig aktiv, gib doch mal phpinfo(); ein
    und schau mal was alles aktiv gesetzt wurde.
    Richte deine DB doch so ein das die " Zeichen fix itegriert werden mit jeder Eingabe.
    So muss es dein Script nicht mehr tun. und alle Sonderzeichen können entfernt werden. Was deine DB wieder ein wenig sicherer macht betreffend PHP/SQL Injection. Übrigens würde ich das magic_quots nicht verwenden. So viel ich weiss ist es veraltet und mit PHP6 nicht mehr aktiv!!! Also Vorsicht. Manno mann, jetzt gebe ich noch sicherheits Tipps

    LG
    Mhh ich möchte ja sonderzeichen in der db speicher sichern da ich nicht weis was der user für eingaben macht. Es ist jedoch warscheinlich das sonderzeichen verwendet werden.

    Habe nur das problem das vor die sonderzeichen ein / eingefügt wird. Da ich nun den string mit stripslashes() bearbeite funktionierts...

    Einen Kommentar schreiben:


  • GTA26
    antwortet
    ich denke es ist serverseitig aktiv, gib doch mal phpinfo(); ein
    und schau mal was alles aktiv gesetzt wurde.
    Richte deine DB doch so ein das die " Zeichen fix itegriert werden mit jeder Eingabe.
    So muss es dein Script nicht mehr tun. und alle Sonderzeichen können entfernt werden. Was deine DB wieder ein wenig sicherer macht betreffend PHP/SQL Injection. Übrigens würde ich das magic_quots nicht verwenden. So viel ich weiss ist es veraltet und mit PHP6 nicht mehr aktiv!!! Also Vorsicht. Manno mann, jetzt gebe ich noch sicherheits Tipps

    LG

    Einen Kommentar schreiben:


  • moevydotnet
    antwortet
    Zitat von Wolla Beitrag anzeigen
    Natürlich weiß mal, ob magic quotes auf dem Server an oder aus sind:

    PHP-Code:
    if ( get_magic_quotes_gpc() ) {
        
    $_POST['name'] = stripslashes($_POST['name']);
    } 
    Ok.... Thx.... Dann macht der das stripslashes nur wenn es benötigt wird....

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Natürlich weiß mal, ob magic quotes auf dem Server an oder aus sind:

    PHP-Code:
    if ( get_magic_quotes_gpc() ) {
        
    $_POST['name'] = stripslashes($_POST['name']);
    } 

    Einen Kommentar schreiben:


  • moevydotnet
    antwortet
    Zitat von lazydog Beitrag anzeigen
    Nein, aber damit siehst du, ob magic_quotes_runtime, bzw. magic_quotes_gpc eingeschaltet sind (du siehst das auch mit [man]phpinfo()[/man]). Wenn ja, kannst du es entweder ausschalten, oder alle deine Daten bei der Ausgabe mit [man]stripslashes()[/man] bearbeiten
    Ok thx,... habs nun eingebaut... man weis ja nie obs aufm server an ist oder nicht... also lieber einbauen dann hat man keine Probleme..

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Zitat von moevydotnet Beitrag anzeigen
    Mhh... da ist leider kein Beispiel dabei: get_magic_quotes_runtime().
    Nein, aber damit siehst du, ob magic_quotes_runtime, bzw. magic_quotes_gpc eingeschaltet sind (du siehst das auch mit [man]phpinfo()[/man]). Wenn ja, kannst du es entweder ausschalten, oder alle deine Daten bei der Ausgabe mit [man]stripslashes()[/man] bearbeiten

    Einen Kommentar schreiben:


  • moevydotnet
    antwortet
    Zitat von lazydog Beitrag anzeigen
    Wahrscheinlich gehts ja nicht um «/» (Slash), sondern um «\» (Backslash). Schau dir mal [man]get_magic_quotes_runtime()[/man] und Verwandte an. Notfalls halt bei der Ausgabe mit [man]stripslashes()[/man] bearbeiten
    Mhh... da ist leider kein Beispiel dabei: PHP: get_magic_quotes_runtime - Manual)

    Könntest du mir pls nen Beispiel zeigen?

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Wahrscheinlich gehts ja nicht um «/» (Slash), sondern um «\» (Backslash). Schau dir mal [man]get_magic_quotes_runtime()[/man] und Verwandte an. Notfalls halt bei der Ausgabe mit [man]stripslashes()[/man] bearbeiten

    Einen Kommentar schreiben:

Lädt...
X