Ich möchte eine Ressource im Web verfügbar machen. Ich möchte diese Ressource schützen: um sicherzustellen, dass sie nur bestimmten Personen zugänglich ist.
Ich könnte eine Art Passwort-basierte Authentifizierung einrichten . Zum Beispiel könnte ich den Zugriff auf die Ressource nur über einen Webserver zulassen, der eingehende Anforderungen auf korrekte Anmeldeinformationen überprüft (möglicherweise anhand einer Sicherungsdatenbank von Benutzern), bevor die Datei bereitgestellt wird.
Alternativ könnte ich auch eine private URL verwenden . Das heißt, ich könnte die Ressource einfach auf einem unvorhersehbaren Pfad hosten https://example.com/23idcojj20ijf...
, der den Zugriff auf diejenigen einschränkt, die die genaue Zeichenfolge kennen.
Sind diese Ansätze aus der Sicht eines Übeltäters, der auf diese Ressource zugreifen möchte, gleichwertig? Wenn nicht, was unterscheidet sie? Und was die Wartbarkeit anbelangt, gibt es Vor- und Nachteile für einen Ansatz, den ich kennen sollte, bevor ich den einen oder anderen implementiere?
quelle
Antworten:
Eine private URL ist etwas schwächer als die Authentifizierung mit Anmeldeinformationen, selbst wenn die Bitgröße der URL mit der der Anmeldeinformationen übereinstimmt. Der Grund ist, dass die URL leichter "auslaufen" kann. Es wird im Browser zwischengespeichert, auf dem Server angemeldet und so weiter. Wenn Sie ausgehende Links haben, wird die private URL möglicherweise auf anderen Websites im Referrer-Header angezeigt. (Es kann auch von Personen gesehen werden, die über die Schulter schauen.)
Wenn es leckt (aus Versehen oder aufgrund von Unachtsamkeit des Nutzers), kann es öffentlich und sogar von Google indiziert werden, wodurch ein Angreifer problemlos nach allen leckenden URLs auf Ihrer Website suchen kann!
Aus diesem Grund werden private URLs in der Regel nur für einmalige Vorgänge wie das Zurücksetzen von Kennwörtern verwendet und sind in der Regel nur für eine begrenzte Zeit aktiv.
Bei Informationssicherheit gibt es einen verwandten Thread: Sind zufällige URLs ein sicherer Weg, um Profilfotos zu schützen ? - Eine Antwort teilt diese Geschichte: Dropbox deaktiviert alte freigegebene Links, nachdem Steuererklärungen bei Google eingegangen sind . Es ist also nicht nur ein theoretisches Risiko.
quelle
Hinweis:
Viele Leute scheinen eine "private" URL mit der Authentifizierung zu verwechseln. Es scheint auch einige Verwirrung zu geben, dass das Senden des Links über eine vertrauenswürdige Entität ein Versuch einer Zwei-Faktor-Authentifizierung ist. Klar ist, dass es sich um eine öffentlich zugängliche Ressource handelt, die jedoch schwer zu erraten ist.
Wenn Sie eine private URL verwenden, sollten Sie immer davon ausgehen, dass sie kompromittiert werden kann. Sie sollten eine solche URL so entwerfen, dass die Ressource auch dann keine Informationen an den Angreifer weitergibt, wenn sie kompromittiert wird.
Private / schwer zu erratende URLs entsprechen nicht der kennwortbasierten Authentifizierung. Private URLs sind von Natur aus überhaupt nicht privat - sie sind öffentlich zugängliche Ressourcen. Ich denke, der Begriff "private" URL ist eine falsche Bezeichnung, eher "obskure" URLs.
Es gibt bestimmte Fälle, in denen die Verwendung einer "privaten" URL akzeptabel ist, die jedoch von Natur aus weniger sicher ist als herkömmliche Authentifizierungsmethoden wie die Kennwortauthentifizierung oder die schlüsselbasierte Authentifizierung.
Einige der Orte, an denen ich häufig "private" URLs gesehen habe, sind:
Die Gemeinsamkeit besteht darin, dass zufällige URLs in der Regel nur für One-Shot-Vorgänge geeignet sind. Traditionelle Authentifizierung und zufällige URLs schließen sich nicht gegenseitig aus . Sie können sogar zusammen verwendet werden, um zusätzliche Sicherheit bei der Bereitstellung einer Ressource zu bieten.
Wie Robert Harvey ausgeführt hat, besteht die einzige Möglichkeit, eine zufällige / private URL sicher zu verwenden, darin, die Seite dynamisch zu generieren und die URL so an den Benutzer zu übermitteln, dass der Benutzer als semi-authentifiziert betrachtet werden kann. Dies können E-Mails, SMS usw. sein.
Eine zufällig generierte / private URL hat normalerweise einige Eigenschaften:
Unterschiedliche Ressourcen erfordern unterschiedliche Sicherheitsstufen. Wenn Sie beispielsweise ein geheimes Rezept mit einigen Freunden teilen möchten, ist es akzeptabel, eine zufällige / private URL zu verwenden, um es mit ihnen zu teilen. Wenn die Ressource jedoch verwendet werden könnte, um die Identität einer Person zu stehlen oder deren Konten bei anderen Dienstanbietern zu gefährden, wäre es Ihnen wahrscheinlich wichtiger, den Zugriff auf diese Ressource zu beschränken.
quelle
Fast alle Authentifizierungsschemata beschränken sich darauf, zu beweisen, dass Sie ein Geheimnis kennen. Sie authentifizieren sich bei einem Dienst, indem Sie nachweisen, dass Sie ein geheimes Passwort oder eine geheime URL kennen oder ...
Mit einigen erweiterten Protokollen (z. B. OAUTH, Kerberos, ...) können Sie nachweisen, dass Sie das Geheimnis kennen, ohne es tatsächlich zu übertragen . Dies ist wichtig, da es neben der Vermutung noch weitere Möglichkeiten gibt, ein "unermessliches" Geheimnis zu erlangen.
Ich könnte im selben Internetcafé sitzen wie Sie und Ihre WLAN-Verbindung abhören, wenn Sie Ihre "nicht erratbare" URL eingeben. Wenn Sie zu diesem Zeitpunkt kein SSL verwenden oder den neuesten Fehler in Ihrer SSL-Implementierung ausnutzen können, dann würde ich auch Ihr Geheimnis kennen.
quelle
<form>
s, JavaScript-verschlüsselte Daten (möglicherweise ist aktives Schnüffeln erforderlich). Es ist einfach zu beheben: Verwenden Sie HTTPS.Viele gute Antworten schon in diesem Thread, aber um die Frage direkt anzusprechen:
Lassen Sie mich eine Definition erstellen. "Authentifizierung" ist die Bereitstellung von Berechtigungsnachweisen zum Nachweis eines Identitätsanspruchs. Die Zugangskontrolle basiert normalerweise auf der Identifikation des Benutzers.
Ihre geheime URL ist nicht an einen bestimmten Benutzer gebunden. Wie andere darauf hingewiesen haben, könnte es in der Protokolldatei eines Proxys oder einer Suchanforderung, die von Google indiziert wird, oder auf viele andere Arten herauskommen.
Andererseits ist ein Passwort an ein eindeutiges Benutzerkonto gebunden. Sie können es zurücksetzen oder nur vom Heimatort des Benutzers, von einer bekannten IP-Adresse oder von einer beliebigen Anzahl anderer Steuerelemente aus verwenden.
Mit einem Benutzernamen / Passwort können Sie den Zugriff wesentlich genauer steuern.
Die Zugriffskontrolle ermöglicht einer Identität (Subjekt) den Zugriff auf eine Ressource (Objekt). In Ihrem URL-Beispiel lautet die Identität "Jeder, der die URL jemals auf irgendeine Weise erhält".
Gehen Sie mit dem Benutzernamen / Passwort, wenn Sie können. URLs treten im Laufe der Zeit auf alle möglichen unerwarteten Arten aus.
quelle
Eine geheime URL ist genauso sicher wie ein geheimes Passwort. Kennwörter sind jedoch einfacher geheim zu halten als URLs, da jeder und seine Programme wissen, dass Kennwörter geheim bleiben müssen.
Beispielsweise zeigt Ihr Browser kein Kennwort auf dem Bildschirm an, speichert Kennwörter nur mit Ihrer Erlaubnis und bietet Möglichkeiten zum Schutz dieses Kennwortspeichers (z. B. durch ein Hauptkennwort entsperrter verschlüsselter Speicher). Im Gegensatz dazu werden auf dem Bildschirm immer URLs angezeigt, die möglicherweise durch den Referrer-Header übertragen werden und ohne weiteren Schutz automatisch im Browserverlauf gespeichert werden.
Ebenso protokollieren HTTP-Proxys normalerweise keine Kennwörter, während URLs normalerweise protokolliert werden.
Das Verwenden von URLs zur Authentifizierung bedeutet auch, dass die Freigabe von URLs die Authentifizierung gemeinsam nutzt, wodurch es schwierig wird, den Zugriff einzeln zu widerrufen (oder aufzuzeichnen).
Und natürlich erben geheime URLs alle Schwächen von geheimen Passwörtern. Insbesondere die Verwendung eines Kennworts zur Authentifizierung gibt dieses Kennwort an den Server und an alle weiter, die Ihre Kommunikation lesen können.
quelle
Ein weiterer Punkt, der nirgends bemerkt wird, ist das Drosseln von "Vermutungen". Bei den meisten Kennwortauthentifizierungssystemen erhalten Sie eine begrenzte Anzahl von Versuchen, ein Kennwort für einen Benutzer zu erraten, bevor weitere Authentifizierungsversuche entweder gesperrt oder begrenzt werden.
Während Sie mit "Vermutungen" gegen Ihr URL-Schema etwas Ähnliches tun könnten, wäre es etwas schwieriger zu implementieren. Wenn Ihre URL-Generierung ein erkennbares Muster aufweist, kann es schwierig sein, jemanden daran zu hindern, sich durch Ihren 'zufälligen' URL-Bereich zu arbeiten.
quelle
Es gibt einen weiteren Aspekt, den ich noch nicht erwähnt habe - URL-Kürzungen.
In einer kürzlich veröffentlichten Veröffentlichung (April 2016) wurde behauptet, dass URL-Shortener-Dienste die erhöhte Sicherheit durch zufällig generierte "nicht ermittelbare" URLs vollständig zunichte machen. Der URL-Bereich des Shorter-Dienstes ist erheblich kleiner als die zufällig generierte URL. Dies bedeutet, dass eine solche "sichere" URL, die mit einem Shorter-Dienst geteilt wird, einfacher als erwartet erraten werden kann.
Zur Veranschaulichung nehmen wir an, dass Ihre zufällige URL 128 Bit lang ist (dh eine Guid). Nehmen wir außerdem an, dass Ihr Zufallszahlengenerator wirklich stark ist und Sie diese Bits auf einheitliche Weise generieren. Das Erraten einer 128-Bit-Nummer ist sehr schwierig und kann einige Zeit in Anspruch nehmen. Ihre URL ist effektiv durch 128-Bit-Schlüssel geschützt.
Nehmen wir dann an, jemand hat diese URL im Google URL Shortener geteilt. Heute gibt dieser Dienst eine 10-stellige ID aus, die aus Buchstaben und Zahlen besteht. (26 + 10) ^ 10 ~ = 3,6 * 10 ^ 15 <2 ^ 52 - so haben wir die Schlüsselstärke effektiv von 128 Bit auf 52 Bit halbiert.
Hinzu kommt, dass die Generatoren aufgrund anderer Überlegungen nicht den gesamten Speicherplatz nutzen und Sie einen effektiven Angriff starten können, der Brute Force mit Seitenkanälen kombiniert (höchstwahrscheinlich vorab zugewiesene zufällige URL-Puffer).
Der ursprüngliche Artikel: http://arxiv.org/pdf/1604.02734v1.pdf
Ein Blog-Beitrag mit einer Zusammenfassung des Artikels (vom Autor): https://freedom-to-tinker.com/blog/vitaly/gone-in- Sechs-Zeichen-Kurz-URLs-gelten-als-schädlich-für-Cloud-Dienste /
quelle
Gah! My password/private key is too long and complex. I know! I'll just write it in a text document and put that in a zip file with an easier password.
beide transparent scheitern, was man gegen die Hoffnung hofft, dass die Leute nicht albern genug wären, dies zu tun. Aber ja, in Wirklichkeit wird Ihre Warnung wahrscheinlich benötigt;)