SqlInjection (?)



  • Hallo liebes Forum,

    Ich versuche gerade ein paar PHP Dateien mit Hilfe von C# in eine MySQL Datenbank zu speichern. Einlesen von Files funktioniert problemlos. Die PHP Dateien machen aber leider Probleme, wnen Sie z.B. ein " im Text haben.

    Mit PHP kann ich ja escape Funktionen verwenden.
    Gibt es mit C# auch eine Möglichkeit Dateien einzulesen, in denen halt mal Zeichen wie ", ', + etc. vorkommen?

    Vielen Dank mals,

    Grüße



  • Hmm wie liest du das file ein? Eigentlich sollte dir doch der Text egal sein? Kannst das ganze doch z.B. über ein BLOB(Stream) lesen. Da du den text damit auch nirgends auswertest, interessieren dich die " gar nicht.



  • Hallo

    Von nem Blob Stream hab ich leider noch nichts gehört... 😕
    Kannst du mir ein BSP dazu geben?

    Ich nehmen an, dass ich das DB Feld anstatt auf Varchar auf Blob setzen muss?

    Grüße



  • Genau. Du nimmst in der Db ein BLOB (Binary Large Object) dort kannst du beliebige Daten reinspeichern. Wie das genau in C# abgebildet wird weiss ich nicht. Daher wollte ich ja fragen wie du das Speichern in der Datenbank lösen möchtest. Da kann ich dir dann ggf weiterhelfen. Du holst dir dann auf die Datei die du speichern möchtest einfach einen Stream. Packst den ggf in ein ByteArray und schreibst den einfach in den BLOB. Dabei schaut also niemand den Text an und daher kann es auch nicht zu injection kommen. So Ähnlich kann man es sicher auch mit Texten machen (Obwohl Varchar "gefühlt" ein schlechter Ansatz ist um lange Texte zu speichern ich glaube da gibts irgendwelche anderen Strukturen).



  • Du kannst dafür Parameter verwenden.

    SqlCommand command = connection.CreateCommand();
    command.COmmandText = "INSERT INTO PhpFiles (Filename,FileContent) VALUES(@Name,@Content)";
    command.Parameters.AddWithValue("Name","MeinePhpDatei.php");
    command.Parametera.AddWithValue("Content",File.ReadAllText("MeinePhpDatei.php"));
    command.ExecuteNonQuery();
    

Anmelden zum Antworten