Özel, yönetilemez URL'ler şifre tabanlı kimlik doğrulamasına eşdeğer midir?


128

Bir kaynağı web üzerinde göstermek istiyorum. Bu kaynağı korumak istiyorum: yalnızca belirli kişilerin erişimine açık olduğundan emin olmak için.

Bir tür şifre tabanlı kimlik doğrulama ayarlayabilirim . Örneğin, kaynağa yalnızca dosya göndermeden önce gelen doğru kimlik bilgileri (belki de bazı kullanıcıların veri tabanına karşı) gelen isteklerini kontrol eden bir web sunucusu üzerinden erişime izin verebilirim.

Alternatif olarak sadece özel bir URL kullanabilirim . Yani, kaynağı basitçe tahmin edilemeyecek bir yoldan, örneğin https://example.com/23idcojj20ijf...tam dizgiyi bilenlere erişimi kısıtlayan bir şekilde barındırabilirim.

Bu kaynağa erişmek isteyen bir kötülük bakış açısından, bu yaklaşımlar eşdeğer midir? Değilse, onları farklı kılan nedir? Sürdürülebilirlik açısından, birini veya diğerini uygulamadan önce bilmem gereken yaklaşımın artıları ve eksileri var mı?


45
Bu yaklaşım genellikle yalnızca şifre sıfırlama gibi şeyler için doğrulama yapılmadan kullanılır . Tartışılmaz bağlantı genellikle kısa bir süre içinde sona erer ve yalnızca yarı kimliği doğrulanmış bir kişi tarafından kullanılabilir (yani web sitesi zaten bağlantının gönderildiği e-posta adresini bilir).
Robert Harvey,

6
Güvenlik ile ilgili tartışma.SE: security.stackexchange.com/q/58215/37496
Mark

9
@ MonkeyZeus bu gizlilik yoluyla güvenlik değildir. Sırrı, bu normalde bir şifre, bu durumda bir URL.
Davidmh

16
@MonkeyZeus: Müstehcen güvenlik, müstehcen anahtarları kullanmamak yerine mekanizmanın uygulanmasını gizli tutmak anlamına gelir . Tartışılmaz URL'ler gizlilik yoluyla güvenlik ise, güçlü şifreler de öyle.
JacquesB

1
@GladstoneKeep URL kısaltıcıları aklınızda bulundurun. Kötü niyetli biri bunlardan birini kullandığında, bağlantıyı tahmin etmek / yazmak çok daha kolay olacaktır.
RookieTEC9

Yanıtlar:


203

Özel bir URL, URL'nin bit boyutu kimlik bilgilerininkiyle aynı olsa bile, kimlik bilgileriyle kimlik doğrulamasından biraz daha zayıftır. Bunun nedeni, URL'nin daha kolay "sızıntı yapması" olabilir. Tarayıcıda önbelleğe alınır, sunucuda oturum açar vb. Giden bağlantılarınız varsa, özel URL diğer sitelerdeki yönlendirici başlığında görünebilir. (Omzunuza bakan kişiler tarafından da görülebilir.)

Sızıntı yaparsa (kaza sonucu veya kullanıcının dikkatsizliği nedeniyle), herkese açık ve Google tarafından endekslenebilir; bu da bir saldırganın sitenize sızan tüm URL'leri kolayca aramasını sağlar!

Bu nedenle, özel URL'ler genellikle yalnızca şifre sıfırlama gibi tek seferlik işlemler için kullanılır ve genellikle yalnızca sınırlı bir süre için etkindirler.


Bilgi güvenliği'nde ilgili bir konu var: Rastgele URL'ler profil fotoğraflarını korumanın güvenli bir yolu mu? - bir cevap bu haberi paylaşıyor: Dropbox, Google’da vergi beyannamelerinin sona ermesinden sonra eski paylaşılan bağlantıları devre dışı bırakıyor . Bu yüzden sadece teorik bir risk değil.


7
Küçük kelime oyunu, ancak “genellikle yalnızca tek seferlik işlemler için kullanılır”, Dropbox'ın (ve belki de diğer bulutlu servislerin) dosyalara erişimi "korumak" için kullandığı gerçeği üzerine aşırı bir ifadeye benziyor.
Steve Jessop,

4
Kullanıcılara, şifrelerini korumak, ancak URL'lerini korumak için sınırlı başarı ile öğretildiğini eklerim.
svavil

1
Özel URL'deki bir parametre kullanılarak teknik kaygıların çoğunun azaltılabileceğini, böylece xzy.com/myDoc?auth=8502375 ve kimlik doğrulaması kontrol edildikten sonra düz bir url'ye otomatik yönlendirmeler kullanılarak hafifletilebileceğini eklemelisiniz. - Fakat bu olası tüm problemleri çözmüyor
Falco

3
TL; DR - gizli URL diye bir şey yoktur. URL’yi HTTPS üzerinden normal olarak gönderseniz bile, URL’leri WiFi noktaları’ndaki kötü niyetli bir aktöre gösteren güncel bir saldırı var. Saldırı, Web Proxy Otomatik Bulma'yı (WPAD) kötüye kullanır ve tarayıcınızı tüm URL'lerinizi saldırgana göndermeye zorlar. Bkz. (Örneğin) arstechnica.com/security/2016/07/…
Harald

5
@JacquesB Özel kısmı URL’nin fragman kısmına koyarak (örneğin, Stack Exchange'in Oauth kimlik doğrulama yanıtları için yaptığı gibi "#" dan sonra) azaltarak belirlediğiniz risklerden bazıları değil mi? Örneğin, başvuru başlığının parçayı içermesine izin verilmez .
Jason C

48

Not:

Birçok insan "özel" bir URL'yi kimlik doğrulamasıyla karıştırıyor gibi görünüyor. Ayrıca, bağlantıyı güvenilir bir varlık aracılığıyla göndermenin iki faktörlü kimlik doğrulaması için bir girişim olduğu anlaşılıyor. Açık olmak gerekirse, tahmin edilmesi yeterince zor olsa da halka açık bir kaynaktan bahsediyoruz.

Özel bir URL kullanırken, her zaman bunun tehlikeye girebileceğini varsaymalısınız - böyle bir URL'yi tasarlamalısınız; böylece, tehlikeye atılsa bile, kaynak saldırgana bilgi sızdırmaz.


Özel / tahmin edilmesi zor URL’ler, şifre tabanlı kimlik doğrulaması ile aynı değildir. Doğal olarak, özel URL'ler hiç özel değildir - bunlar halka açık kaynaklardır. "Özel" URL teriminin bir yanlış isim olduğunu düşünüyorum, bunun yerine "belirsiz" URL’lerdir.

"Özel" bir URL kullanmanın kabul edilebilir olduğu bazı durumlar vardır, ancak bunlar şifre doğrulama veya anahtar tabanlı kimlik doğrulama gibi geleneksel kimlik doğrulama yöntemlerinden doğal olarak daha az güvenlidir.

Yaygın olarak kullanılan "özel" URL’leri gördüğüm yerlerden bazıları:

  1. Şifre Sıfırlama e-postaları
  2. Sertifika Oluşturma e-postaları
  3. Hesap / e-posta onay e-postaları
  4. Satın alınan içeriğin teslimi (e-kitaplar, vb.)
  5. Uçuş check-in, baskı biniş kartı, diğer kimlik doğrulama işlemleri geleneksel kimlik doğrulamanın yanı sıra özel URL'ler de kullanır

Buradaki ortak nokta, rastgele URL’lerin tipik olarak yalnızca tek seferlik işlemler için iyi olmasıdır. Ayrıca, geleneksel kimlik doğrulama ve rastgele URL'ler birbirini dışlayan değil - aslında, bir kaynak sunarken ek güvenlik sağlamak için birbirleriyle birlikte kullanılabilirler.


Robert Harvey’nin belirttiği gibi, rasgele / özel bir URL’yi güvenli bir şekilde kullanmanın tek yolu, sayfayı dinamik olarak oluşturmak ve URL’yi kullanıcının kimliği doğrulanmış sayılabilecek şekilde sunmaktır. Bu e-posta, SMS, vb. Olabilir.

Rasgele oluşturulmuş / özel bir URL genellikle birkaç özelliğe sahiptir:

  1. Makul bir süre sonra sona ermelidir.
  2. Tek kullanımlık bir URL olmalıdır: IE, ilk erişime girdikten sonra süresi bitmelidir.
  3. Kullanıcının güvenli bir şekilde kimliğini doğrulamak için kullanıcının kimliğini güvence altına alması gereken başka bir işletmeye ertelemelidir. (Bağlantıyı e-posta veya SMS yoluyla göndererek vb.)
  4. Modern bir bilgisayarın URL'yi son kullanma tarihinden önceki zaman dilimi içinde kaba bir şekilde zorlaması imkansız olmalıdır - ya kaynağı ortaya çıkaran API'yi sınırlandırarak veya tahmin edilemeyecek kadar yeterli entropi ile bir URL bitiş noktası oluşturarak.
  5. Kullanıcı hakkında bilgi sızdırmamalıdır. IE: Sayfa bir şifreyi sıfırlamaksa: sayfa, talep edenin hesap bilgilerini görüntülememelidir. Alice bir şifre sıfırlama bağlantısı isterse ve Bob URL’yi bir şekilde tahmin ederse, Bob’in kimin şifresini sıfırladığını bilmesi gerekmez.
  6. Kullanıcı hakkında bilgi sızdırıyorsa, geleneksel kimlik doğrulamanın üstünde kullanılmalıdır; örneğin, bir çerez seti varsa veya oturum kimliği hala geçerliyse, bir sayfa kimliği doğrulanmış bir kullanıcı olarak kabul edilebilir.

Farklı kaynaklar farklı güvenlik seviyeleri gerektirir. Örneğin, bazı arkadaşlarınızla gizli bir tarif paylaşmak isterseniz, onlarla paylaşmak için rastgele / özel bir URL kullanmak kabul edilebilir. Ancak, kaynak bir kişinin kimliğini çalmak veya hesaplarını diğer hizmet sağlayıcılarla riske atmak için kullanılabilirse, büyük olasılıkla bu kaynağa erişimi kısıtlama konusunda çok daha fazla önem verirsiniz.


4
Gizli ürün reçetesini kola ürün geliştirme ekibimle paylaşmak isteseydim, bu biraz farklı bir şey gerektirirdi. Yine, bağlam. :-)
Bir CVn

7
@ MichaelKjörling Birinin benim gönderimden ne kadar farklı çıkacağına emin değilim. Oldukça açık bir şekilde, farklı kaynakların farklı kimlik doğrulama seviyeleri gerektirdiğini belirttim. Kokain tarifi büyükannemin kurabiyelerinin tarifinden çok daha değerli olurdu.
Charles Addis,

9
@CharlesAddis Açıkça anneannemin kurabiyelerini hiç tatmadın!
Brian

1
Sanırım yanılsam da, @ Michael’ın gizli bir URL’nin sahip olması gereken özellikler hakkındaki 5 maddelik açıklamanızın, arkadaşlarınızla gizli bir tarif paylaşması için zaten gereğinden fazla olduğunu düşünüyorum. Her birini tek kullanımlık yapmak (ve dolayısıyla reçeteye erişen arkadaş başına ayrı bir URL’ye ihtiyaç duymak) özellikle de bir kullanım süresi varsa, önemsiz bir fayda için çok büyük bir güçlük gibi görünüyor . Cevabınızı, "özel bir URL kullanmak kabul edilebilir, ancak özel URL'lerde bu 5 özelliğe sahip olmalı" ve IMO'nun biraz yanlış olduğu anlamına geliyor.
Steve Jessop,

1
@BenjaminHodgson, tam olarak # 5 => öğesinin nedenidir, eğer link / URL yanlış ellerde kalırsa, talep eden kullanıcı hakkında herhangi bir bilgi sızdırmaz.
Charles Addis,

8

Neredeyse tüm kimlik doğrulama şemaları, bir sır bildiğinizi kanıtlamak için kaynamaktadır. Gizli bir şifre veya gizli bir URL bildiğinizi kanıtlayarak, bazı servislerde kendinizi doğrulayın veya ...

Bazı daha gelişmiş protokoller (örneğin, OAUTH, Kerberos, ...), sırrı gerçekten iletmeden sırrı bildiğinizi kanıtlamanızı sağlar . Bu önemlidir, çünkü tahmin etmenin yanı sıra “yönetilemez” bir sır elde etmenin daha fazla yolu vardır.

Sizinle aynı İnternet kafede oturuyordum, "yönetilemez" URL’nizi yazdığınızda WiFi bağlantınızı gizlice dinledim. Bu noktada, eğer SSL kullanmıyorsanız ya da SSL uygulamanızdaki en yeni hatadan yararlanabilseydim, o zaman ben de sizin sırrınızı bilirdim.


1
Adil olmak gerekirse, bu aynı zamanda kimlik doğrulama veya herhangi bir iletişim için de geçerlidir .
Andy,

"WiFi bağlantınızı gizlice dinleme" herhangi bir şey üzerinde çalışın: URL'ler, CSRF korumalı <form>, JavaScript askeri sınıf şifreli veriler (belki aktif koklama gerekebilir). Bunu düzeltmek çok kolay: HTTPS kullanın.
Gustavo Rodrigues

@GustavoRodrigues Her şeyden önce, kulak misafiri olmak gerçekten "bir şey üzerinde çalışmak" yaptıysa , o zaman HTTPS'de çalışır. Aksi takdirde, "bir şey" ne anlama geliyor? Ya da HTTPS'de onu her şeyin üstünde tutan sihir nedir?
Süleyman Yavaş

2
... ama orada olan gizli misafirlerin uzak tuttuğunu sihirli: Bu açık anahtarlı şifreleme var. İşte basit bir örnek: Bir servis bana rastgele bir sayı ve zaman damgası içeren bir meydan okuma gönderir . Mücadeleyi özel anahtarımla imzalayıp iade ediyorum. Eğer benim kayıtlı ortak anahtarımla cevabımı doğrulayabilirlerse, o zaman bu sırrı bildiğimi kanıtlar (sır benim özel anahtarımdır), ancak bunu potansiyel bir gizli konuşmacıya açıklamadan kanıtladım. Gizlice dinleyenlerin yanıtımı tekrar etmelerine yardımcı olmaz, çünkü hizmet hiçbir zaman aynı mücadeleyi iki kez göndermez.
Solomon Yavaş

HTTPS (yani, SSL üzerinden HTTP) açık anahtarlı kripto kullanır, ancak SSL'nin en popüler uygulamaları olan FYI, gizli dinleyicilerin kriptografiye rağmen girmelerine izin veren bir hatalar geçmişine sahiptir. Her yıl iki veya üç kez yeni hatalar (aka, "istismarlar") keşfedilmiş gibi görünmektedir ve SSL kullanan tüm ürünlerin geliştiricilerinin en son istismara yayana kadar saçları yanıyor. (Bana nasıl bildiğimi sorma!)
Solomon Yavaş

3

Zaten bu konuda çok sayıda iyi cevap var, fakat doğrudan soruyu ele almak için:

Bu kaynağa erişmek isteyen bir kötülük bakış açısından, bu yaklaşımlar eşdeğer midir? Değilse, onları farklı kılan nedir?

Bir tanım yapmama izin verin. "Kimlik doğrulama", bir kimlik iddiasını kanıtlamak için kimlik bilgileri sağlamaktır. Erişim kontrolü genellikle kullanıcının tanımlanmasına dayanır.

Gizli URL’niz belirli bir kullanıcıya bağlı değil. Diğerlerinin de belirttiği gibi, bir proxy’nin günlük dosyasına veya google tarafından endekslenen bir arama isteğine veya sızabileceği birçok yolla sonuçlanabilir.

Öte yandan, benzersiz bir kullanıcı hesabına bir şifre bağlanır. Sıfırlama olanağınız veya yalnızca kullanıcının ev konumundan veya bilinen IP adresinden veya herhangi bir sayıda diğer kontrollerden kullanılmasına izin verebilirsiniz.

Bir kullanıcı adı / şifre size erişimin daha ayrıntılı kontrolünü verir.

Erişim kontrolü bir kaynağın (nesnenin) bir kaynağa (nesnenin) erişimine izin verir. URL örneğinizde kimlik, "URL’yi herhangi bir yöntemle alan herhangi biri" olur.

Mümkünse kullanıcı adı / şifre ile gidin. URL'ler zaman içinde beklenmedik şekillerde sızar.


1

Gizli bir URL, gizli bir şifre kadar güvenlidir. Ancak, şifreler URL’lerden daha gizli tutulur, çünkü herkes ve programları şifrelerin gizli kalması gerektiğini bilir.

Örneğin, tarayıcınız ekranda bir şifre göstermez, yalnızca izninizle şifreleri saklar ve bu şifre depolamasını (örneğin bir ana şifre ile açılan şifreli depolama gibi) korumak için araçlar sunar. Buna karşılık, URL'leri her zaman ekranda gösterecek, muhtemelen yönlendirici başlığından sızıntı yapabilir ve başka bir korumaya gerek kalmadan tarama geçmişinizde otomatik olarak saklar.

Aynı şekilde, HTTP proxy sunucuları genellikle şifreleri günlüğe kaydetmezken, URL'ler genel olarak günlüğe kaydedilir.

Kimlik doğrulama için URL’lerin kullanılması, URL’lerin paylaşılmasının kimlik doğrulamasını paylaştığı anlamına gelir;

Ve elbette, gizli URL'ler, gizli şifrelerin tüm zayıflıklarını devralır. Özellikle, kimlik doğrulama için bir şifre kullanmak, bu şifreyi sunucuya ve iletişiminizi okuyabilen herkese gösterir.


3
Bu cevap, yanlış olan birçok varsayımda bulunur. HTTPS ile bir siteye giriş yaparsanız ve kullanıcı adınızı ve şifrenizi girerseniz, aralarındaki vekiller ve proxy'ler şifrenizi bilmez.
Pieter B,

"İletişiminizi kesmek" derken içeriğini yeniden oluşturma yeteneği demek istedim. Bu HTTPS tarafından önlenebilir veya önlenmeyebilir. Özellikle, tek bir hatalı sertifikaya güvenmek (örneğin, tüm yüklemelerde aynı özel anahtarı kullanan bazı kurumsal HTTPS proxy'si tarafından), bir saldırganın HTTPS trafiğinin ortasında bulunan bir adama izin vermesini sağlar.
meriton

2
ancak url’deki sırrı kodlayarak, HTTPS’yi tamamen kullanılamaz hale getirirsiniz. İstemci ile sunucu arasındaki her sekme gizlidir. Gerekli ödün vermeyen sertifikalar yoktur.
Pieter B,

4
Saçmalık; HTTPS’de, URL yalnızca şifreli akışta iletilir. Sırasıyla DNS arama ve IP başlık alanlarında görünen alan veya IP ile karıştırıyor olmalısınız.
meriton

1

Herhangi bir yerde not edilmemiş olan bir başka öğe 'tahminlerin' azaltılmasıdır. Çoğu şifre doğrulama sistemi için, daha fazla doğrulama girişimi kilitlenmeden veya sınırlandırılmadan önce bir kullanıcı için bir şifre tahmin etme konusunda sınırlı sayıda girişimde bulunursunuz.

URL şemanıza karşı 'tahminler' ile benzer bir şey yapmanıza rağmen, uygulanması biraz zor olacaktır. URL oluşturma işleminiz için tanınabilir bir düzen varsa, o zaman birisinin 'rasgele' URL alanınız üzerinde çalışacak şekilde ayarlanması durması zor olabilir.


0

Henüz bahsetmediğim bir başka yön daha var - URL kısaltıcılar.

Yakın tarihli bir yayında (Nisan 2016), URL kısaltıcı hizmetlerin, rastgele oluşturulmuş "yönetilemez" URL'ler tarafından sağlanan artan güvenliği tamamen geçersiz kıldığı iddia edildi. Kısa hizmetin URL alanı, rastgele oluşturulmuş URL'nizden çok daha küçüktür - bu, daha kısa bir hizmetle paylaşılan bu tür "güvenli" URL'lerin beklenenden daha kolay bir şekilde tahmin edilebileceği anlamına gelir.

Göstermek için - rastgele URL’nizin 128bit uzunluğunda olduğunu varsayalım (yani bir kılavuz). Ayrıca, rastgele sayı üreticinizin gerçekten güçlü olduğunu ve bu bitleri tek tip bir şekilde oluşturduğunuzu varsayalım. Bir 128bit numarayı tahmin etmek çok zordur ve oldukça zaman alabilir - URL’niz etkin bir şekilde 128bit anahtar korumalıdır.

Ardından, birisinin bu URL'yi google URL kısaltıcısında paylaştığını varsayalım. Bugün bu hizmet 10 karakter uzunluğunda bir kimlik yayar, harf ve rakamlardan oluşur. (26 + 10) ^ 10 ~ = 3,6 * 10 ^ 15 <2 ^ 52 - bu nedenle anahtar gücünü 128 bit'ten 52 bit'e düşürdük.

Jeneratörlerin diğer tüm alanlardan dolayı tüm alanı kullanmadıklarını ve kaba kuvvetleri yan kanallarla (büyük olasılıkla önceden tahsis edilmiş rastgele URL arabellekleri) birleştiren etkili bir saldırı kurabileceğinizi ekleyin.

Orijinal makale: http://arxiv.org/pdf/1604.02734v1.pdf Makaleyi
özetleyen bir blog yazısı (yazar tarafından): https://freedom-to-tinker.com/blog/vitaly/gone-in- altı karakter-kısa URL'ler düşünülmüş-zararlı-için-bulut hizmetleri /


2
Evet, ancak bir kişi bu tür hizmetleri hassas veriler için kullanan kişilerin URL'leri kısaltan bir hizmet de dahil olmak üzere herhangi bir yere göndermekten daha iyi bileceğini umar . Bu, her 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.ikisinin de şeffaf bir başarısızlık olduğunu söylemekten hiç de farklı değil. Ama evet, gerçekte, ne yazık ki uyarınız muhtemelen gereklidir;)
underscore_d

@underscore_d evet - tam olarak bu konuyu yorumlayacak kadar ayrıntılı olarak biliyorsanız, o zaman bu blog-layık bir nokta değildir.
Robert Grant,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.