Ich habe eine Flash-Datei, die auf meiner Website befindet und ich habe eine PHP-Datei, die Anfragen von Flash-Datei alle 5 Minuten bekommt. Ich möchte sicher sein, dass Flash-Datei, die Anfrage sendet, auf meiner Website und nicht woanders befindet. Wie kann ich es tun. Gibt es irgendetwas in PHPs globalen Variablen, die mir helfen können oder es noch etwas anderes gibt? Danke für die Hilfe.Überprüfen Sie, wo befindet sich Flash-Datei senden Anfrage an PHP
Antwort
var url:String=stage.loaderInfo.url;
var goodPattern:RegExp=/^(http:\/\/)(www\.)?stackoverflow\.com/;
if (goodPattern.test(url)==true) {
trace("This flash is hosted on stackoverflow");
} else {
trace("This flash is hosted not on stackoverflow");
}
Danke, aber es ist keine zuverlässige Lösung, weil es auf der Benutzerseite ist. Ich muss es in php nicht im Flash überprüfen. –
Sie können Daten von stage.loaderInfo.url in Ihre Anfragen, die von Flash kommen, wie eine Signatur oder einen Hash davon, hinzufügen und dann mit PHP vergleichen. – Arkady
Sie könnten etwas von $_SERVER['HTTP_REFERER']
oder $_SERVER['REMOTE_HOST']
erhalten, aber diese Informationen gefälscht werden kann.
Es gibt viele Methoden, die verwendet werden können, um sicherzustellen, dass Anforderungen von einer bestimmten/legitimen Quelle kommen. Die Technik, die mir zunächst für die Absenderverifizierung einfällt, ist eine digital signature. Wenn Sie die Verwendung eines öffentlich-privaten Schlüsselpaars vermeiden möchten und die Anfrage vom selben Server kommt, der sie empfängt, kann es sinnvoll sein, eine pre-shared secret key zu verwenden (stellen Sie sicher, dass Sie eine Hash-Nachricht mit einem Salz erhalten).
Dies zu überprüfen ist nichts anderes als die gleiche Sache in einem AJAX-Handler zu überprüfen: Referrers (unzuverlässig), verwenden Token (zuverlässiger, aber immer noch nicht narrensicher), erfordern eine validierte Anmeldung (besser noch), etc. .. –