2016-07-10 9 views
-1

Ich möchte + 1M Produktbilder auf Dateisystem (ext4) speichern, damit ich sie von Web verbinden kann. Ich benutze Ubuntu 16.04, NGINX 1.10, PHP 7 (falls Sie es brauchen).Wie können Sie Dateien benennen, um zu verhindern, dass Webspider die gesamte Sammlung abruft?

Wie soll ich Dateien benennen, um zu verhindern, meine gesamte Bildsammlung mit Webspider zu holen?

Ich weiß, dass ich nicht alle Dateien nacheinander benennen kann, also muss ich Chaos in die Benennung hinzufügen. Wie?

Erstellen Hash 1.jpg aussehen würde, zufällig, aber es ist ziemlich leicht auffindbar, dass es nur Hash ist ...

+0

Wenn Sie die Dateien veröffentlichen, sind sie gut ... öffentlich, egal, wie Sie sie benennen. – PeeHaa

+0

Es gibt einen Unterschied zwischen dem Betrachten von 20 Bildern auf der Produktseite und dem Abrufen von 1M-Dateien ohne ihre URL (weil ich die Produktseite nicht geöffnet habe). – Martin

+0

Was verhindert, dass meine Spinne die Produktseite öffnet? Das ist irgendwie wie Crawler arbeiten. – PeeHaa

Antwort

0

Wenn Sie Zugriff auf Ihre Bilder beschränken wollen, schlage ich vor der Suche entweder Amazon S3 (um Ihre Bilder zu speichern) oder Amazon CloudFront (Sie speichern Ihre Bilder auf Ihrem eigenen Server).

Beide ermöglichen Ihnen, den Zugriff auf Ihre Bilder auf ein bestimmtes IP und Ablaufdatum zu beschränken. So können Sie in PHP eine solche geschützte Verbindung zu S3/CF generieren und für jede Anfrage an den Browser senden.

Daher muss jeder Browser/Crawler zuerst Ihre Webseite kontaktieren, bevor er die Produktbilder abrufen kann. Hier

ist einige relevante Dokumentation:

Beachten Sie, dass viele andere CDNs unterstützen unterzeichnet/geschützten URLs als auch.


Having said, dass bei weitem wäre die einfachste Lösung, um ein Salz zu dem Hash hinzuzufügen, die richtig zu erraten ist unwahrscheinlich. Z.B. sha1(1.jpg) ist viel einfacher zu erkennen als sha1(some-very-very-very-secret-key-1.jpg).

+0

OK, so ist One-Way-Hash mit Salz.Beim Lesen Ihrer Antwort erkannte ich, dass ich eine zufällige "BIGINT" -Nummer erzeugen und den Pfad zur Datei in der Datenbank mit den restlichen Produktinformationen speichern konnte. – Martin