| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| elephpant Registriert seit: Aug 2003 Ort: Vlbg, Ö
Beiträge: 55
|
Hallo! Habe ein mittelschweres Problem. Ich verstehe wie die FileReference-Klasse zu verwenden ist, habe mehrere Beispiele heruntergeladen und auch selbst mit Flash ein Upload-Tool umgesetzt. Funktioniert prima. Im Serverseitigen PHP-File habe ich danach zusätzlich eine Authentifizierung via PHP-Sessions eingebaut. Login über Flash mit einem neuen LoadVars-Objekt (daten per post) funktioniert. Logout ebenfalls. Ich lasse PHP einen Log schreiben der mir die Session-ID die PHP vergibt speichert und welche Aktion der Benutzer ausführt (Login, Logout, Upload) damit ich das mit Sicherheit sagen kann. Ich habe festgestellt (und nun zum eigentlichen Problem), dass bei Verwendung des LoadVars-Objekts eine andere Session-ID vergeben wird, als mittels Upload-Methode der FileReferences-Klasse. Habt ihr eine Ahnung, was da vor sich geht? Denn wenn sich das nicht irgendwie lösen lässt, lässt sich jeder Flash-Upload hacken, wenn man nicht eine HTTP-Authentifizierung verwenden will (oder kann).
__________________ UNIX rules |
| | |
| | #2 (permalink) |
| Neuer Benutzer Registriert seit: Nov 2003 Ort: berlin
Beiträge: 883
|
Wenn Du per loadVars eine PHP-Seite aufrufst werden keine Cookie's übertragen. Somit wird auch keine Session-ID weitergegeben und php vergibt dann eine neue. Du must also die Session-ID vorher in Flash speichern und dann im LoadVars-Objekt als GET-String anhängen.
__________________ ° www.webXvideo.de | Partyspinne.de - Partyräume, Catering, Künstler ... für Veranstalter |
| | |
| | #3 (permalink) |
| elephpant Registriert seit: Aug 2003 Ort: Vlbg, Ö
Beiträge: 55
|
Das scheint die einzige möglichkeit zu sein. Übergabe der Session-ID an Flash ist aber kritisch, weil das ein angriffspunkt für session-fixation oder session-phishing wäre. Deshalb suche ich nach einer Möglichkeit wie das ganze funktioniert, ohne dass ich irgendwas an die urls anhängen muss. Leider scheint dies derzeit wie gesagt die einzige Möglichkeit zu sein. Ich möchte nicht böse klingen, aber die Cookies scheinen doch mitüberliefert zu werden. Ich habe in meiner Flashanwendung zwei Buttons und eine Textarea um den Status abzufragen. Das PHP-Skript ist so konfiguriert, dass es entsprechende Variablen zurückliefert: ActionScript:
Wie 1. aus dem was in die textArea hineingeschrieben hervorgeht und 2. aus dem was der log auf der Server-Seite schreibt, geht hervor, dass die Selbe Session-ID verwendet wurde (beim klick auf beide buttons). Also dass Der Benutzer tatsächlich über das Session-Cookie eingelogt ist (Sonst würde beim Drücken auf Logout "Log out not necessary" ausgegeben werden - wirds aber nicht). Das interessante ist, dass beim Upload (im selben swf) eine neue Session-ID vergeben wird. Wenn es tatsächlich die einzige möglichkeit ist, die Session-ID hier über die URL zu übergeben, ... weiss nicht - kann man das so bedenkenlos machen??
__________________ UNIX rules |
| | |
| | #4 (permalink) |
| the journey continues... Registriert seit: Oct 2001 Ort: Österreich, Wien, District 10
Beiträge: 2.392
|
ich hab das bis jetzt in flash 8 noch nicht ausprobiert, aber... man kann ja sowieso nur das uploaden was du zulässt, zB jpg mit maximal 100KB oder was auch immer...selbst wenn das jemand hackt hätte es keinen nutzen...was sollte er denn damit anfangenund da man sowieso zuerst sich einloggen muss bei deiner version kann es eh kein anderer als der eingeloggt ist...
__________________ [*]Browser _ IE 7 [*]FlashPlayer 10 [*]Intel Core Duo 2,4GHZ, VISTA Ultimate 64bit |
| | |
| | #5 (permalink) |
| elephpant Registriert seit: Aug 2003 Ort: Vlbg, Ö
Beiträge: 55
|
solang niemand anderer an die session-id ran kommt hast du recht. di session-id direkt in den urls ist glaube ich trotzdem nicht so unbedenklich - immerhin wird das ja dann z.b. von proxies gespeichert. vielleicht kann man das dann auch durch sniffen rauskriegen? das mit der dateiauswahl stimmt für flash. Aber wenn ich als hacker hergehe, und nicht das orignal verwende sondern mir selber ein uploadscript bastle, kann ich alles hochladen, sofern ich serverseitig nicht die selben beschränkungen gemacht habe wie im Flash (was ich gemacht habe, aber ich wills nur zur komplettheit sagen).
__________________ UNIX rules |
| | |
| | #6 (permalink) |
| a.k.a maddin79 Registriert seit: Jul 2003 Ort: berlin f-hain
Beiträge: 1.693
|
ein hacker kann dateien hochladen- so schlimm wirds doch wohl nicht sein oder du ergreifst noch andere sicherheits maßnahmen. es ist halt ein allgemeines problem das flash halt auf der clientseite ist und somit offen und einsehbar. es gibt ja mittlerweile schon seit jahren diskussionen zu sicheren highscore listen - was wohl das verbreitetste sicherheits problem darstellt. ne menge dazu auch hier im forum. lies dir das alles mal ruhig durch, is echt interessant, und vorweg - DIE sichere lösung gibt es (noch) nicht gruß maddin
__________________ |
| | |
| | #7 (permalink) |
| elephpant Registriert seit: Aug 2003 Ort: Vlbg, Ö
Beiträge: 55
|
also mal vielen dank für eure Antworten! ich habe es jetzt so gelöst, dass ich die Session-ID in flash speichere und mit der URL als get-Parameter übergebe. ganz gefallen tut mir aber nicht. wie auch immer, es funktioniert! und das zählt. das problem mit dem file-upload ist immer, dass es vielleicht irgendwer schaffen könnte php-skripts hochzuladen, und das ist heikel. aber solang die datei nicht die php-extension hat, funktioniert es eh nicht, und das check ich ja im php-file nochmals zur sicherheit nach. nochmal danke! lg,ma
__________________ UNIX rules |
| | |
| | #8 (permalink) | |
| the journey continues... Registriert seit: Oct 2001 Ort: Österreich, Wien, District 10
Beiträge: 2.392
| Zitat:
![]() nur ein gedanke: "die session wird ja jedesmal neu erzeugt wenn er sich einloggt, dh wenn ich flash die session-ID schicke (wie auch immer) kann er sie mir mit post zB zurück schicken in die upload.php und dort überprüfe ich ob es tatsächlich das flash von der html seite ist...bevor ich upload durchführe" warum du das über die url machst verstehe ich nicht ganz...
__________________ [*]Browser _ IE 7 [*]FlashPlayer 10 [*]Intel Core Duo 2,4GHZ, VISTA Ultimate 64bit | |
| | |
| | #9 (permalink) |
| elephpant Registriert seit: Aug 2003 Ort: Vlbg, Ö
Beiträge: 55
|
hm - soweit ich weiss stimmt es nicht ganz, dass die session-id jedesmal neu vergeben wird, wenn sich der benutzer neu einlogt. die session-id wird vergeben, wenn der benutzer z.b. aus einem neuen browser-fenster auf die php-datei zugreift. siehe http://www.php.net/session_start und weiterführende links. Ich muss es aus folgenden gründen über die URL machen: . Ich will, dass sich der benutzer zuerst authentifizieren muss, bevor er den upload startet. Vorteil: Er kann mehrere Uploads machen, ohne, dass er sich ständig aus und einlogen muss. . die fileReference-Klasse lässt es nicht zu zusätzliche POST-Parameter mitzuschicken, oder ich weiss nicht wie es geht deshalb muss ich die sessionID, die ich beim authentifizierungsvorgang in flash speichere beim upload als get-parameter mitschicken. Normalerweise sollte die SessionID in einem Cookie automatisch übermittelt werden. Wie ich aber festgestellt habe, wird beim Aufruf der upload-Methode von php eine neue sessionID vergeben, was ich mir nicht anders vorstellen kann, als dass flash irgendwie etwas macht, dass php glaubt, der zugriff käme von wo anders, als von der stelle von der die authentifizierung ursprünglich durchgeführt wurde (was eigentlich im gleichen SWF abläuft). Das ist der eigentliche Ursprung meines Problems...
__________________ UNIX rules |
| | |
| | #10 (permalink) | ||
| the journey continues... Registriert seit: Oct 2001 Ort: Österreich, Wien, District 10
Beiträge: 2.392
| Zitat:
Zitat:
__________________ [*]Browser _ IE 7 [*]FlashPlayer 10 [*]Intel Core Duo 2,4GHZ, VISTA Ultimate 64bit | ||
| | |
| | #11 (permalink) |
| elephpant Registriert seit: Aug 2003 Ort: Vlbg, Ö
Beiträge: 55
|
sorry, bin in flash nicht so der profi... wie würdest du das schon vorher aufrufen? ich dachte, dass ich das mit loadVars mache, weil ich keine andere Möglichkeit gefunden habe ein Serverseitiges PHP-Skript aufzurufen (kenne leider auch nicht alle Internetreferenzen). Die ganzen PHP-Schnittstellen für Flash (AMFPHP, PHPObject, usw) erfüllen nicht den Zweck den ich brauche. Denn wie gesagt, wenn ich das ganze schon vorher aufrufe (eben z.b. über loadVars) dann wird mir beim Aufruf der upload-methode der filereferences-klasse eine neue session-id am server erzeugt, und ich weiss nicht woran das liegt.
__________________ UNIX rules |
| | |
| | #12 (permalink) |
| the journey continues... Registriert seit: Oct 2001 Ort: Österreich, Wien, District 10
Beiträge: 2.392
|
loadVars passt eh, ich weiss jetzt nicht wie du die sessionID übergibst, aber ich zeig mal wie ich glaube das es möglich ist... ActionScript:
das überprüfen und upload muss in derselben php datei stehen, weil wenn es getrennt wäre kann ich ohne probleme wieder auf die upload.php zugreifen... das überprüfen muss als erstes in der upload.php datei stehen und wenn dann flash die sessionID an die upload.php schickt musst du mit einer session_var ein OK setzten damit beim nächsten mal die upload.php nicht mehr überprüft ob es stimmt... du kannst nämlich so oft du willst die upload.php aufrufen in flash, aber in der upload.php datei muss der ablauf auch stimmen, hoffe das ist irgendwie verständlich
__________________ [*]Browser _ IE 7 [*]FlashPlayer 10 [*]Intel Core Duo 2,4GHZ, VISTA Ultimate 64bit |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: May 2005
Beiträge: 11
| Wie wäre es damit
Ne Sicherheitsmethode die of gemacht wird:
Vorteile:
ist ne ziemlich einfache Methode, und da beim Fileupload eh nur files an $_FILES übertragen wird kannst du in php einfach nochmal überprüfen ob alles stimmt, er kann keinen "hackercode" über $_FILES einschleusen |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |