2009-02-26 11 views
1

Bei der Implementierung einer flash-based uploader, waren wir mit einem Problem konfrontiert: Flash doesn't provide the correct cookies. Wir müssen unsere PHP Session ID über eine POST Variable übergeben.Ist POST so sicher wie ein Cookie?

Wir haben eine funktionierende Lösung entwickelt und implementiert, die nach einer POST PHPSESSID sucht.

Ist POST die Sitzungs-ID so sicher wie das Senden in einem Cookie?

Möglicher Grund für: Weil beide im HTTP-Header sind und gleichermaßen für einen Client zu fälschen. Möglicher Grund gegen: Weil es einfacher ist, eine POST-Variable als ein Cookie zu schmieden.

Antwort

5

Es ist so sicher - Schmieden der POST ist genauso einfach wie der Cookie. Dies geschieht durch einfaches Setzen von Flags in cURL.

Das gesagt, ich denke, Sie haben auch eine gute Lösung.

2

Wenn Sie in der Lage sind, die Sitzungs-ID von aktivem Inhalt zu erhalten, um POST zu erhalten, bedeutet dies vermutlich, dass Ihr Sitzungscookie nicht HttpOnly ist, was einer unserer Hosts behauptet, dass es sonst a good idea for defending against cross-site scripting attacks ist.

Betrachten Sie stattdessen einen JavaScript-basierten oder sogar refresh-basierten Uploader-Monitor, der gut genug mit allem anderen integrieren sollte, dass der Cookie HttpOnly sein kann.

Wenn Ihre Website keine Inhalte von Drittanbietern akzeptiert, sind Cross-Site-Scripting-Angriffe dagegen nicht von Belang. In diesem Fall ist der POST in Ordnung.

2

Ich denke, Senden über GET würde auch gut funktionieren, da Sie alles in einer HTTP-Anfrage (mit Curl oder sogar Flash) fälschen. Wichtig ist, was in Ihrem Cookie/Post/Get-Parameter verschlüsselt ist und wie es auf der Serverseite verschlüsselt und überprüft wird.

0

POST-Daten sind kein HTTP-Header, aber sie werden als Teil des TCP-Streams gesendet, wodurch sie genauso leicht zu lesen/zu schmieden sind wie ein HTTP-Header. Wenn Sie eine HTTP-Anforderung abgefangen würde es in etwa so aussehen:

POST /path/to/script HTTP/1.1 
Host: yourdomain.com 
User-Agent: Mozilla/99.9 (blahblahblah) 
Cookie: __utma=whateverthisisacookievalue;phpsessid=somePHPsessionID 

data=thisisthepostdata&otherdata=moredummydata&etc=blah 

So wie andere gesagt haben, POST und Cookies (und GET-Daten, dh Abfrage-Strings) sind alle leicht zu fälschen, da sie alle nur sind Text in demselben HTTP-Paket.

+0

Es ist wichtig zu beachten, dass content-length dem Server mitteilt, wie viele Daten in der Anfrage zu erwarten sind, damit keine unendliche Warte- oder Pufferüberläufe auftreten. –

1

Wirklich, wenn Sie sich Sorgen machen, welche einfacher zu schmieden ist, sorgen Sie sich um die falsche Sache. Einfach gesagt, wird es für einen erfahrenen Angreifer trivial sein. Sie können die "Script-Kiddies" ausschließen, indem Sie sich gegenseitig auswählen, aber diese Leute sind nicht diejenigen, über die Sie sich Sorgen machen müssen. Die Frage, die Sie sich stellen sollten, lautet: "Welche Abwehrmechanismen haben Sie gegen jemanden, der eine ID fälscht?" Es wird passieren. Wenn Ihre ID unverschlüsselt und leicht zu erraten ist, ist das ein Problem. Es wird gehackt werden. Da Sie fragen, was sicherer ist, würde ich sagen, dass Sie besorgt sind.

Hier ist eine andere Sache zu beachten, da Ihre Anwendung Flash ist, ist es anfällig für Änderungen (genau wie Javascript HTML-Code), weil der kompilierte Code auf dem Angreifer-Rechner ist. Sie können die Binärdatei durchsuchen und herausfinden, wie der Code funktioniert und was er vom Server abrufen muss.

0

Ich möchte nur wiederholen, dass sowohl Cookie und Post gleichermaßen unsicher sind.

+0

Mit einem Cookie können Sie vor der Übertragung SSL anfordern, und Sie können HttpOnly angeben; Das heißt, ich würde Cookies als einen potenziellen Vorteil gegenüber POST betrachten, wo diese Schutzmaßnahmen nicht einmal verfügbar sind. –