Dateien in PHP auf den Server laden
Julia Varchmin
- php
Hallo zusammen,
kann man mit php Dateien in eine mysql-Datenbank hochladen? Habet Ihr eine Idee, wie?
Und wenn das verschiedene User machen: Wie ist die Gefahr von Vi-
ren?
Danke sagt Julia
kann man mit php Dateien in eine mysql-Datenbank hochladen? Habet Ihr eine Idee, wie?
Mit $_FILES, mysql_query() und mysql_escape_string() sollte das kein Problem sein.
Und wenn das verschiedene User machen: Wie ist die Gefahr von Viren?
Wie meinst Du das? Gefahr für wen?
Gruß,
soenk.e
kann man mit php Dateien in eine mysql-Datenbank hochladen? Habet Ihr eine Idee, wie?
ja, bei <form enctype="multipart/form-data" angeben und man kann mit
<input type="file" name="gewünschterName"> files hochladen, die man dann beim upload script mit $_FILES ansprechen kann.
einfach print_r($_FILES), dann siehst gleich, worum es geht...
man kann natürlich auch php scripts zB mit fopen einlesen und dann in eine datenbank speichern. beim auslesen aus der db führen diese natürlich nichts aus...
$record['phpscript'] -- ist nur ein string;-)
oder welche gefahren meinst du sonst?
Wie meinst Du das? Gefahr für wen?
Gruß,
soenk.e
Dank.e ;-)
Ich meinte die Gefahr von Viren fuer den Server. Gibt es nur Windows-Viren? Oder nur wenige Linux-Viren, so dass die Gefahr von Viren nicht besteht?
Gruesse von Julia
Ich meinte die Gefahr von Viren fuer den Server. Gibt es nur Windows-Viren? Oder nur wenige Linux-Viren, so dass die Gefahr von Viren nicht besteht?
Die Gefahr von Viren besteht auf jedem System, der Unterschied zwischen Windows und Unix (Linux) ist nur, daß Unix ein recht ausgefeiltes Rechtesystem eingebaut hat, während man sowas unter Windows eher überhaupt nicht findet. Unix ist ein Mehrbenutzersystem, Windows hingegen hat seinen Ursprung in einem Einzelplatzrechner.
Und die Schlamperei von Microsoft tut ihr übriges, nicht grundlos nutzen die meisten Windows-Viren Outlook, den Internet Explorer oder den Internet Information Server ("IIS").
Was Dein Datenbankproblem angeht: Ein Virus muß immer as Programm ausgeführt werden. Daten werden nicht ausgeführt, insofern hat der Server beim bloßen Speichern in/Lesen aus der Datenbank kein Problem.
Die Möglichkeit, daß jemand ein verseuchtes Programm in die Datenbank stellt und Du das Teil rausholst und bei Dir zu Hause ausführst, ist natürlich eine ganz andere Geschichte.
Gruß,
soenk.e
Hallo,
Was Dein Datenbankproblem angeht: Ein Virus muß immer as Programm ausgeführt werden. Daten werden nicht ausgeführt, insofern hat der Server beim bloßen Speichern in/Lesen aus der Datenbank kein Problem.
zwar richtig, aber nicht vollständig. Ein Schädling kann auch in einem Textfeld stecken, das dann bei ungeschickter Programmierung mit where-Statements die ganze Datgenbank löscht...
Die Möglichkeit, daß jemand ein verseuchtes Programm in die Datenbank stellt und Du das Teil rausholst und bei Dir zu Hause ausführst, ist natürlich eine ganz andere Geschichte.
der echte Chris
zwar richtig, aber nicht vollständig. Ein Schädling kann auch in einem Textfeld stecken, das dann bei ungeschickter Programmierung mit where-Statements die ganze Datgenbank löscht...
Danke Euck allen!
@Chris: Hast Du einen Hinweis, wo ich mehr darueber erfahre?
Danke Julia
@Chris: Hast Du einen Hinweis, wo ich mehr darueber erfahre?
Der geheime Geheimcode lautet:
" or ""="
Setze das als $geheimcode in folgende SQL-Befehle ein und erfreue Dich an den Auswirkungen:
delete from tabelle where name="$geheimcode"
select privatpost from tabelle where nutzer="$nutzer" and passwort="$code"
Mit der bereits genannten Funktion mysql_[real_]escape_string() lässt sich das Problem von eingegebenen Anführungszeichen umgehen. Ähnlich interessant, wenn auch für andere Anwendungszwecke, die Funktion htmlentities().
Gruß,
soenk.e
Hi!
Was Dein Datenbankproblem angeht: Ein Virus muß immer as Programm ausgeführt werden. Daten werden nicht ausgeführt, insofern hat der Server beim bloßen Speichern in/Lesen aus der Datenbank kein Problem.
zwar richtig, aber nicht vollständig. Ein Schädling kann auch in einem Textfeld stecken, das dann bei ungeschickter Programmierung mit where-Statements die ganze Datgenbank löscht...
Soenke hat die Funktion mysql_escape_string() genannt, die solche Manipulationen zuverlässig unterbindet.
Grüße
Andreas
Hi!
Die Gefahr von Viren besteht auf jedem System, der Unterschied zwischen Windows und Unix (Linux) ist nur, daß Unix ein recht ausgefeiltes Rechtesystem eingebaut hat, während man sowas unter Windows eher überhaupt nicht findet. Unix ist ein Mehrbenutzersystem, Windows hingegen hat seinen Ursprung in einem Einzelplatzrechner.
Für die neueren NT-Versionen gilt das wohl nicht mehr so. Ich habe mir sagen lassen dass das Rechte-System auf Windows 2000 sogar ausgefeilter und mächtiger ist als unter Unix. Nur wenn immer der Administrator für alles und jedes verwendet wird bringt das tollste Rechtesystem überhaupt nichts, wenn unter Unix alles unter Root laufen würde wäre das auch nicht besser. Das Problem für Privatanwender ist, dass Windows-Programme nicht so toll mit dem Rechte-System harmonieren und oft Admin-Rechte brauchen, aber das ist denek ich ein Problem der Privatanwender, auf professionell aufgestzten Server denke ich dass das Rechte-System durchaus zu gebrauchen ist und entsprechend viel Sicherheit bietet wie die Unix-Rechte. Das Rechte-System ist immer nur so gut wie die User sich auch dran halten.
Aber nichts desto trotz sollte man Dateien die auf den Server geladne wrden kontrollieren bevor man sie speichert, wenn z.B. Bilder erwartet werden mit getimagesize(), oder mit entsprechend anderen Funktionen/Programmen für andere Dateien. Dateien einfach so auf den Server zu laden würde ich nicht machen.
Ich empfehle hier (Julia) auch:
http://www.dclp-faq.de/q/q-formular-upload-php4.html
http://de3.php.net/manual/de/features.file-upload.php
Viele Grüße
Andreas