• 19.04.2024, 21:32
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Dateiupload per PHP

Sonntag, 29. Juni 2003, 14:56

Hi
Ich möcht für meine Homepage so ne art bilder-gallerie machen, wo es über ein web-interface leicht möglich sein soll bilder hochzuladen.. Hab mir dafür auch schon ein php-skript gebastelt, damit man über das file-inputfeld in formularen was hochladen kann.. allerdings muss ich dem wwwrun (arbeite mit apache unter suse8.1) dazu natürlich schreibrechte geben..
Ich wollt jetzt mal wissen, ein wie großes sicherheits-risiko das ist, bzw wie sowas anders gemacht wird, wenn nicht über schreibrechte für den wwwrun.. In linux-foren wird mir leider nicht geantwortet, deshalb zähle ich jetzt auf euch!
Vielen Dank schonmal
BenniG

Re: Dateiupload per PHP

Sonntag, 29. Juni 2003, 18:18

Ist PHP im Safe Mode?!

Bei mir läuft es so, dass der Kollege erstmal ins "Temp" schreibt
und ich mir das File dann per Befehl hole:

Quellcode

1
2
if(!move_uploaded_file($datei,$dateiname))
    die ("Fehler");


Du kannst dann noch vor dem Upload die Mime Types überprüfen, wenn Du Dir einigermaßen sicher sein willst, das Du auch ein Bild bekommst ;-)

groetjes

dohmian 8)

Re: Dateiupload per PHP

Sonntag, 29. Juni 2003, 18:45

Wie schalt ich PHP in den safemode? sorry, aber ich hab fast alles bezüglich apache und php mit webmin konfiguriert und da nix von wegen safemode gesehen, vielleicht hab ich auch nur noch nicht danach gesucht.. was bewirkt denn diese safe-mode??
Prüfen wollt ich die Datei sowieso, also größe, mime-typ und so.. das skript was ich benutzt hab funktioniert genauso wie deins, also mit dem move..
Ich bin mir halt nicht sicher, ob da kein Sicherheitsrisiko entsteht weil der wwwrun ja schreibrechte auf ein verzeichnis braucht auf dass ich ja auch übers internet zugreifen kann, ich weiß nicht obs da dann möglichkeiten gibt von außen irgendwas draufzuschieben, oder ob das sicher genug ist..

Re: Dateiupload per PHP

Sonntag, 29. Juni 2003, 21:17

Wenn safe_mode aktiv ist, sind verschiedene PHP-Funktionen privilegiert oder eingeschränkt. Zumeist gilt die safe_mode Einschränkung, dass auf eine Datei oder ein Verzeichnis nur eingewirkt werden darf, wenn die Datei oder das Verzeichnis denselben Eigentümer hat wie das Script.

Um den Safe_Mode einzuschalten einfach in der php.ini nach safe_mode suchen und dort enablen.

Ob das sicher ist hängt vor allem davon ab, was Du da programmiert hast ;-)
Und Du solltest Dein PHP immer aktuell halten, dann kann Dir zumindest Exploit-mäßig nichts passieren.

dohmian 8)

Re: Dateiupload per PHP

Sonntag, 29. Juni 2003, 23:47

Wenn ich mich recht erinnere ist der Datei-Upload eine der Funktionen von PHP die durch aktivieren des Safe-Modes komplett abgeschaltet werden... ::) (kann aber auch sein daß ich mich irre, ich meine da nur so was im Kopf zu haben. Ist schon ein bischen her daß ich mich mit Upload beschäftigt habe...).

Davon abgesehen würde ich es so ähnlich machen wie von dohmian beschrieben: Laß die User erstmal in ein von außen an sonsten nicht zugängliches Verzeichnis uploaden so daß Du erstmal validiren kannst was da alles hochgeschickt wird. Das ist die einzige Möglichkeit wirklich sicher zu gehen daß da kein Schindluder getrieben wird... Dabei denke ich nichtmal direkt an eine Sicherheitslücke sondern eher an Mißbrauch des Webspace für "heiße" Daten:

Ich erinnere mich da an einen Fall aus einem anderen Forum wo es jemand den Forum-Usern erlaubt hatte Bilder per Script auf seinen Webspace hochzuladen. Nach ein paar Wochen hat er dann Besuch von Kripo/Staatsanwaltschaft bekommen und durfte denen erstmal erklären wie die Kinderpornos auf seinen Webspace kommen...
"I am a leaf on the wind, watch how I soar!
-- Hoban Washburn

Re: Dateiupload per PHP

Montag, 30. Juni 2003, 00:00

Es soll ja nicht jeder x-beliebige was hochladen können, sondern ich werde in das skript ne user/passwortabfrage machen, und es werden vielleicht 2 leute außer mir an die daten kommen..
soll halt so sein, dass ich nen "bild-datensatz" mit beschreibung und so in ne mysql datenbank schreibe und dazu noch ein bild hochlade was z.B. über ne auto-inkrement-nummer in dem datensatz identifiziert wird.. das ganze soll dann möglichst sofort auf der page erscheinen.. wär halt net schlecht wenn man das komplett per form steuern kann, damit auch andere ausgesuchte leute was hochladen können ohne direkt zugriff auf den server zu haben..
Ich weiß halt nur nicht, ob das ganze dann durch die schreibrechte auf nen weltoffenen ordner zum problem wird, kenn mich nicht so aus was es für möglichkeiten über hacks ungewollte manipulationen vorzunehmen..

Re: Dateiupload per PHP

Montag, 30. Juni 2003, 00:27

Zitat von »Andreas«

Wenn ich mich recht erinnere ist der Datei-Upload eine der Funktionen von PHP die durch aktivieren des Safe-Modes komplett abgeschaltet werden... ::) (kann aber auch sein daß ich mich irre, ich meine da nur so was im Kopf zu haben. Ist schon ein bischen her daß ich mich mit Upload beschäftigt habe...).


Vertraue mir, ich weiß, dass es beim SAFE_MODE geht, und zwar dann nur mit der move_uploaded_file Funktion! ;D ;D ;D

Das jemand Kinderpornos hochlädt kann man natürlich mit PHP nicht verhindern, außer man kontrolliert jedes einzelne Bild und löscht dann die "Ungewollten".

Wenn Du Angst um die Sicherheit hast, dann darfst Du keinen Server betreiben, denn ein Sicherheitsloch gibt es immer irgendwo, wobei Windoofs ein einziges Sicherheitsloch ist und ein Apache/PHP Server schon sehr sicher ist, wenn man immer die aktuelle Release mit den aktuellsten Patches verwendet...

Nebenbei bemerkt, wenn Du eh nur 2 Kumpels den Zugriff erlaubst, dann brauchst Du Dir um die Sicherheit nicht allzugroße Sorgen machen. Das würde ich nur, wenn jeder da was hochladen darf...

groetjes

dohmian 8)

Re: Dateiupload per PHP

Montag, 30. Juni 2003, 01:11

Ja gut, das hört sich schonmal gut an, die einzige sorge sind halt die schreibrechte für den wwwrun, weil ja irgendwer irgendwie was hochladen könnte wenn er sich als wwwrun ausgibt, oder ist das nicht möglich?? ich bin leider kein experte was linux und die möglichkeiten was zu manipulieren angeht.. die skripts werd ich ausreichend sichern.. ip hat leider wenig sinn, aber nen langes passwort mit paar sonderzeichen sollte ja schicken.. So direkt per Http kann ja keiner was hochladen oder irr ich mich da?

Re: Dateiupload per PHP

Montag, 30. Juni 2003, 11:34

Ach Du meinst die sonstigen Schreibrechte auf Deiner Kiste ;-)
Mach Dir da mal keine Sorgen, denn normalerweise darf sich kein User an Deiner Kiste als "wwwrun" anmelden. Schau einfach mal in der /etc/passwd nach wohin die shell zeigt.

Realisier das Ganze einfach mit einem PHP_AUTH Script und dann ist das schon verdammt sicher.

groetjes

dohmian 8)

Re: Dateiupload per PHP

Montag, 30. Juni 2003, 13:33

Der wwwrun darf sich nicht anmelden, also im webmin (kennt das einer von euch) steht von jeher "no login allowed" beim wwwrun, aber ich dachte vielleicht kann man den apache irgendwie dazu veranlassen als wwwrun irgendwas zu schreiben..
Na gut, ich muss aber dann erstmal weiter für meine Klausuren lernen, vielleicht nerv ich euch danach in den Semesterferien nochmal..
So long
BenniG

Re: Dateiupload per PHP

Montag, 30. Juni 2003, 14:40

Wer Linux kennt wird auch den Webmin kennen ;-)

Und den Apache kann man nicht mal eben so davon überzeugen mal eben irgendwas irgendwo als wwwrun hinzuschreiben... :-X

groetjes

dohmian 8)

Re: Dateiupload per PHP

Mittwoch, 2. Juli 2003, 17:27

Hi,
muss schonwieder mal dumm fragen..
Das ganze soll ja nicht auf meinem heimischen serverlein stattfinden, sondern auf nem webspace von all-inkl..
Uploaden geht, aber dazu muss ich dem Ordner Schreibrechte für Other geben, also quasi für alle!!
Dann kann doch eigentlich auch jeder X-beliebige, der auch auf dem server ist meine daten schreiben, oder wie ist das??
Ich weiß nicht wie sicher die all-inkl server sind, aber ich meine in der CT mal gelesen zu haben, dass viele provider nicht streng genug sperren und man sich somit zugriff auf die daten anderer beschaffen kann..
Gibts noch ne andere möglichkeit, oder muss ich mit dieser Sicherheitslücke leben??
Hab grad gesehen dass der owner von dem ordner in den ich das schreibe nicht der wwwrun ist, sondern meine userid, wie kann ich ordner erzeugen und deren owner frei wählen??
Danke nochmal
Benni

EpS

Senior Member

Re: Dateiupload per PHP

Mittwoch, 2. Juli 2003, 17:31

Hab jetzt nicht alle Posts gelesen aber so wie ich es das gesehen habe läuft es die ganze Zeit auf Dateisystem selber raus...

Warum nicht in MySQL einbinden? Da kann man auch Binärdateien abspeichern.
Ist sicherer und wahrscheinlich auch komfortabler. ;)
[move][shadow=blue,right,3000]H 2 O - The BEST Way to cool your damn hot Hardware...[/shadow][/move]

Re: Dateiupload per PHP

Mittwoch, 2. Juli 2003, 18:00

Hmm,
also hab in ner PHP file über
mkdir('test/tst/', 0755);
ein verzeichnis mit owner wwwrun erstellt mit ner passenden rechtemaske..
Läuft soweit.. Darf nochnichtmal ich selbst was reinschreiben, nur der wwwrun, bleibt nurnoch das problem, falls einer den genauen pfad auf dem server rausfindet und was hochläd..

@EpS:
Wie macht man sowas mit MySql?? und wie bekomm ich ne php-seite dazu mir daraus ein bild zu basteln?? Hast du da evtl ein beispiel??

Re: Dateiupload per PHP

Mittwoch, 2. Juli 2003, 18:32

http://www.dynamic-webpages.de/20.foren.…rum=MySQL&kat=5

im dateisystem ist aber bestimmt schneller, besonders wenn die datei oft abgerufen wird.
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

Re: Dateiupload per PHP

Mittwoch, 2. Juli 2003, 19:08

Hatte zwischenzeitlich schon das hier benutzt.. Geht auch, find ich auch sehr verständlich, nur muss man natürlich mal wieder alles ummodeln, weils für die alte php-version gemacht ist wo man noch nicht diesen $HTTP_POST_VARS['blabla'] kram braucht..
Aber gehen tuts, nur mal wieder ne speed-frage, das stimmt wohl.. Na mal gucken wie ichs mache..
Mich würd mal interessieren wie sowas professionell gelöst wird, z.B. beim Ebay Bilderservice..
Aber danke schonmal für die antworten
BenniG

Re: Dateiupload per PHP

Mittwoch, 2. Juli 2003, 19:14

Bilder in einer MySQL Datenbank ist zwar stylisch, kann ich aber auf gar keinen Fall empfehlen. :-X
Denk mal an das Backup, wenn Du die Datenbank mit x MB vollgepackt hast. Ich würde das ganze im Filesystem machen, auch aus dem ganz einfachen Grund, das MySQL nicht dafür gemacht ist Bildchen abzuspeichern...

dohmian 8)

Re: Dateiupload per PHP

Mittwoch, 2. Juli 2003, 19:20

Da haste recht, stylisch siehts aus wenn einer den quellcode anguckt..
FileSystem wär schon besser, aber da ist halt immernoch meine angst, dass irgendein pseudo hacker php scripts benutzen kann um irgendwas auf meinen account zu schieben, weil der ja dann auch wwwrun ist.. und dass ich nen server für mich allein hab glaub ich kaum, dafür sind die zu günsitg ;-) Hmm, was tun sprach Zeus..
Hoffen dass keiner mein Verzeichnis rausbekommt, denk ich..

@dohmian: oder ist das 100% sicher ?

Re: Dateiupload per PHP

Mittwoch, 2. Juli 2003, 19:30

bei professionellen systemen nimmt man schonmal eine oracle-datenbank ;)
das bringt schonmal einiges an speed bei vielen zugriffen (oder kann bringen, man kann auch oracle durch schlechtes db-design ausbremsen)

dann kann man schauen ob man für die bilddaten eine eigene, dafür optimierte, db nutzt, oder auch ins filesystem schreibt.

aber ich nehm an das es immer schneller sein wird direkt aus dem filesystem zu lesen, weil das der webserver alleine macht, und nicht noch php oder ein anderes programm angestrengt wird und dann auch noch die datenbank.

zudem dann die netzlast zwischen webserver/applikationsschicht und datenbank sehr gross wird.

wenn die bilder aber dauernd geändert werden, kann es auch sein das eine datenbank-lösung sauberer zu schreiben ist, und dadurch einiges vereinfacht wird.

manchmal ist auch eine schnelle programmierung wichtiger als die ausführungsgeschwindigkeit ;)

und dann achtet man darauf alles skalierbar zu halten, also so das die hardware aufgerüstet werden kann, also auf mehrere server verteilt.

deswegen programmiert man ja auch oft in java auf dem server, weil dort schon vieles vorgegeben wird, was skalierbarkeit angeht.
das ist bestimmt nicht so schnell wie c++ oder assembler, aber wesentlich schneller programmiert.
und dann kanns schonmal billiger sein einen zweiten server hinzustellen ;)
Gott hat die Welt ja nur in sieben Tagen erschaffen können, weil es keine installierte Basis gab.

Re: Dateiupload per PHP

Donnerstag, 3. Juli 2003, 00:29

Zitat von »crushcoder«

bei professionellen systemen nimmt man schonmal eine oracle-datenbank ;)
das bringt schonmal einiges an speed bei vielen zugriffen (oder kann bringen, man kann auch oracle durch schlechtes db-design ausbremsen)

Professionell heisst hier auch viel Geld dafür ausgeben, denn ich will nicht wissen, was Oracle so alles an Lizenzen für die Datenbankinstallation haben will...

Zitat

aber ich nehm an das es immer schneller sein wird direkt aus dem filesystem zu lesen, weil das der webserver alleine macht, und nicht noch php oder ein anderes programm angestrengt wird und dann auch noch die datenbank.

So schauts aus, der Webserver schaufelt die Bilder einfach nur direkt aus dem Filesystem raus, wohingegen erst der PHP-Interpreter aufgerufen wird, der dann die Datenbank aufruft um der mitzuteilen, welches Bild sie rausrücken soll, und dann erst werden die Bildinformationen durchgeparst...


Zitat

manchmal ist auch eine schnelle programmierung wichtiger als die ausführungsgeschwindigkeit ;)

Hmm, Du meinst doch bestimm nicht die Zeit in der das Script programmiert ist? Die Zeit die der Webserver benötigt um die das Script bis zum Ende auszuführen hängt natürlich im wesentlichen Maße davon ab, wie "sauber" das Ganze programmiert ist!

Zitat

und dann achtet man darauf alles skalierbar zu halten, also so das die hardware aufgerüstet werden kann, also auf mehrere server verteilt.

Ich glaube das ist für BenniG's Anwedungsvorhaben der totale Overkill, aber machbar wär's. Am Besten noch, wenn die Bilddaten in einer Datenbank gespeichert werden, die sich über mehrere Server redundant verteilt... ;D ;D ;D

groetjes

dohmian 8)