2009-04-08 4 views
3

Ich muss erkennen können, ob Flash der Ursprung einer Anfrage an einen ASP.NET-Dienst war. Der Grund dafür ist, dass Flash SOAP-Nachrichten nicht verarbeiten kann, wenn der Antwortstatuscode etwas anderes als 200 ist. Ich erlaube jedoch, dass die Ausnahme durch unsere SOAP-Webdienste aufsteigt und der Statuscode für einen SOAP-Serverfehler daher 500 lautet. Vor Flash 10 konnte ich die Referrer-Eigenschaft überprüfen, und wenn sie in .SWF endete, änderte ich den Statuscode auf 200, damit unsere Flex-Anwendung die SOAP-Nachrichten entsprechend verarbeiten konnte. Aber seit der Einführung von Flash 10 wird der Referrer nicht mehr gesendet. Ich möchte den Header der x-flash-Version verwenden, aber es scheint nur gesendet zu werden, wenn ich IE benutze, nicht FF.Wie kann ich zuverlässig feststellen, ob Flash der Urheber einer Anfrage an einen Dienst war?

Was bringt mich zu meiner Frage: Wie kann ich zuverlässig erkennen, wenn Flash der Urheber einer Anfrage an einen Dienst war?

Antwort

3

Sie können nicht zuverlässig tun tun dies - schließlich könnte es ein Proxy sein, oder jemand könnte Snooped Ihre Flash-Komponente Verkehr zu erarbeiten, wie Sie Ihre API ohne Einschränkungen, die die Flash-Version nicht haben würde.

Für eine grundlegende Plausibilitätsprüfung, um die Ausgabe zu unterscheiden, können Sie einfach ein Flag hinzufügen, um "Flash API version please" zu sagen; Aber bei allen HTTP-Kommunikationen ist es relativ trivial, das zu fälschen, was auch immer benötigt wird.

+0

Da wir nicht zuverlässig feststellen können, ob Flash der Urheber der Anfrage war oder nicht, haben wir uns entschlossen, nicht mehr Energie zu investieren, um dieses Problem zu lösen. –

2

Wie wäre es mit http://domain.com/path/to/target?flash=true? Wenn Sie nur die API ändern oder verschiedene Fehler zurückgeben, benötigen Sie keine sichere Erkennungsmethode.

Bearbeiten: Hinweis, das ist definitiv nicht "zuverlässig", aber brauchen Sie wirklich eine zuverlässige Erkennungsmethode oder eine, die nur funktioniert? Das funktioniert, es ist einfach nicht sicher und wenn Sie es brauchen, um sicher zu sein, tun Sie etwas falsch, weil es unmöglich ist zu wissen, welcher Client tatsächlich verwendet wird.

1

Sie können den User-Agent überprüfen (aber es gefälscht werden könnte), verwendet Flash etwas wie „Adobe Flash“

+0

Eigentlich habe ich hier einen Flash-Film, der eine HTTP-Anfrage macht, die den Browser-User-Agent bereitstellt. – cmc

0

Der sicherste Weg (der einfachen Optionen dargestellt), um die Referrer-URL Regex entsprechen denen habe .swf drin.

Das wäre eine verdammt viel schwieriger zu parodieren als eine Abfragezeichenfolge/Formularparameter & flash = true. Es ist sicherlich hackable mit Hacker-Tools, die falsche HTTP-Header (Referrer) senden können, aber von den angebotenen Optionen erfordert es die größte Mühe.

Verwandte Themen