Ich kenne etwas Geschichte und seinen Zweck.
Ursprünglich url facebook Bild so aussehen
https: // {* snipped *} /XXXXXXXXXXX_b.jpg
aber es gibt mehr als auf die Größe des Bildes zur Verfügung, damit die Menschen haben Zugriff auf ein Bild einfach Suffix _b ersetzen mit _n
(So, jetzt ist es https: // {* snipped *} /XXXXXXXXXXX_n.jpg)
größere Version des Bildes zuzugreifen (falls vorhanden).
Einige Zeit später implementiert Facebook zentrales Bildsystem, das dynamisch zuschneiden und die Größe Bild on the fly auf Anfrage.
Die URL von Facebook zu diesem Zeitpunkt vorgesehen ist, kann wie folgt aussehen:
https: // {* snipped *} .fbcdn.net/hprofile-xxx1/v/t1.0-1/p32x32/12345678_123412341234123_4123412341234123412_n.jpg
Und wenn Leute die URL sehen, entsteht ihre Neugier.
versuchen Lassen Sie einige Parameter aus der URL entfernen.
https: // {* gekappt *} .fbcdn.net/hprofile-xxx1/v/12345678_123412341234123_4123412341234123412_n.jpg
Und was sie bekommen ist die größte und vollständigste Version des Bildes, das sie möglicherweise von Facebook Server bekommen können.
Diese Methode hat lange funktioniert.
Wenn Leute Bild in ihrer E-Mail sehen (meistens Profilbild), können sie eine vollständige Version des Bildes erhalten, ohne sich sogar bei Facebook anzumelden.
Es funktionierte überall mit privaten Profilbild.
Die schnellste und günstigste Lösung für Facebook ist, den Anfragepfad mit einem Signaturalgorithmus zu signieren.
Ich denke, sie verwenden HMAC als Kernalgorithmus und leiten HMAC-Eingabe von verschiedenen Quellen einschließlich Anfragepfad.
Dies stellt sicher, dass die einzige Partei, die eine gültige URL erzeugen kann, derjenige ist, der einen HMAC-Schlüssel hat. (vermutlich nur facebook)
Jetzt ist das alte Problem behoben, das Sie nicht mehr verwenden können, aber es gibt mehr als ein Problem, das durch Hinzufügen von MAC behoben werden kann.
Es ist Ungültigmachung des Zugriffs auf Bilder.
Lassen Sie sagen, dass die Leute einmal ihr Foto veröffentlichen (jetzt können andere sowohl einen gültigen Anfragepfad als auch eine signierte Unterschrift von Facebook haben) und später ändern sie ihre Meinung und machen das Foto privat.
Allerdings können Personen mit gültiger URL und Signatur das Bild immer noch vom Facebook-Server abrufen.
Um dieses Problem mit super günstigen Ressourcen zu lösen, berücksichtigt sie, dass sie bereits HMAC-Berechnung implementiert.
(Und um die Tatsache zu verdecken, dass Facebook nicht wirklich Ihr Bild von ihrem System löscht, wenn Sie es löschen.)
Sie beschlossen, den vom Zeitstempel abgeleiteten Wert in den Eingang von HMAC zu mischen.
(Siehe RFC-6238 für ähnliche Verwendung)
So ist in regelmäßigen Abständen Signaturaktualisierung von Facebook erforderlich, um Zugriff auf Foto zu erhalten.
Dies löste das letzte Problem mit sehr billigen zusätzlichen Ressourcen.
Und hier haben Sie es.
Einige der Geschichte und Begründung hinter den Parametern von Facebook.
Ich bin mir sicher, dass es kein offizielles Dokument über den Zeitrahmen gibt, aber es sollte nicht schwierig sein, selbst zu experimentieren, da Sie jetzt wissen, dass der Wert des Zeitrahmens fest und vorhersehbar ist.
Haben Sie etwas dazu gefunden? Ich hatte gerade das gleiche Problem. – cappie013
Es gibt keine echte Lösung. Was wir getan haben, um dieses Problem zu umgehen. Um das Bild innerhalb von 24 Stunden herunterzuladen und woanders zu speichern. – Luc