1 puan yazan GN⁺ 2 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Susam Pal, Chris Morgan’ın sorgu dizelerini yasakladım yazısını okuduktan sonra Wander Console’a eklediği via= sorgu parametresini kaldırdı
  • Wander Console, kişisel web sitesi ziyaretçilerinin topluluğun önerdiği sayfaları rastgele keşfetmesini sağlayan dağıtık ve kendi kendine barındırılabilen bir web konsolu; şu anda 50’den fazla web sitesi tarafından barındırılıyor ve 1500’den fazla web sayfası öneriyor
  • via= özelliği, önerilen web sitesinin yöneticisinin erişim günlüklerinde ziyaretin kaynağını görmesini sağlıyordu; ancak bunu https://midnight.pub/?via=https://susam.net/wander/ örneğinde olduğu gibi hedef URL’yi doğrudan değiştirerek yapıyordu
  • Sorgu dizesi eklemek yeni bir URL oluşturur; bu da başka bir kaynağa işaret edebilir veya 404 döndürebilir ve int10h.org üzerindeki yazı tipi sayfası gibi sorgu dizesini kendi tanımlayıcısı olarak kullanan siteleri gerçekten bozabilir
  • Tarayıcılarda kaynak bilgisinin iletimini kontrol etmek için zaten Referer ve Referrer-Policy bulunuyor; bu nedenle Wander Console 0.6.0’dan itibaren başkalarının URL’lerine öneri kaynağını belirtmek için sorgu dizesi eklemiyor

Chris Morgan’ın sorgu dizesi eleştirisi tetikleyici oldu

  • Susam Pal, Chris Morgan’ın sorgu dizelerini yasakladım başlıklı yazısını okuduktan sonra kendi projesi Wander Console’a eklediği via= sorgu parametresini kaldırdı
  • Chris Morgan, başkalarının https://chrismorgan.info/no-query-strings?ref=example.com örneğinde olduğu gibi kendi URL’lerine izleme bilgisi eklemesini istemiyor
  • Kaynak bilgisi gerekiyorsa HTTP Referer başlığına bakılabilir; o başlık yoksa bunun muhtemelen geçerli bir nedeni vardır
  • Susam Pal, geçmişte Hacker News’te Chris Morgan’ın kendi CSS boilerplate kurallarına bıraktığı ayrıntılı geri bildirim sayesinde bağlantı alt çizgilerini korumak ve ziyaret edilmiş bağlantıların mor rengini korumak gibi dersler aldığını söylüyor
  • O zamandan beri Chris Morgan’ın web ile ilgili yazılarını ve geri bildirimlerini okumayı sürdürdü; Lobsters’taki RSS’e yazar bağlamı ekleme gönderisine yaptığı yakın tarihli yorumu da faydalı bir örnek olarak veriyor

Wander Console’un yapısı ve amacı

  • Wander Console, kişisel web sitesi ziyaretçilerinin bağımsız kişisel web sitesi sahiplerinden oluşan topluluğun önerdiği ilginç web sitelerini ve sayfaları keşfetmesini sağlayan küçük, dağıtık ve kendi kendine barındırılabilen bir web konsoludur
  • Susam Pal’ın konsolu susam.net/wander/ adresinde bulunuyor ve Wander düğmesine basıldığında Wander topluluğunun önerdiği rastgele bir kişisel web sayfası yükleniyor
  • Araç, konsolu uygulayan tek bir HTML dosyası ile site sahibinin komşu konsolların listesini ve önerilen web sayfalarının listesini tanımladığı tek bir JavaScript dosyasından oluşuyor
  • Bu iki dosya web sunucusuna kopyalandığında sıradan bir web sunucusuyla çalışabiliyor; ayrı bir sunucu tarafı mantığına veya sunucu tarafı yazılımına ihtiyaç duymuyor
  • Codeberg Pages veya GitHub Pages gibi kısıtlı ortamlarda da barındırılabiliyor
  • Wander düğmesine basıldığında konsol başka bir uzak konsola bağlanıyor, web sayfası önerilerini alıyor, ardından bunlardan birini rastgele seçip tarayıcıda yüklüyor
  • Biraz ortadan kaybolan StumbleUpon’a benziyor, ancak tamamen dağıtık olmasıyla ayrılıyor
  • Biraz webring’e de benziyor, fakat topluluk ağı döngüsel bir yapıyla sınırlı değil; her türlü grafik yapısında olabilir
  • Şu anda 50’den fazla web sitesi bu aracı barındırıyor ve toplamda 1500’den fazla web sayfası öneriyor
  • Bilinen konsolların ve önerilen sayfaların son anlık görüntüsü susam.codeberg.page/wcn/ adresinde görülebilir
  • Araç hakkında daha fazla bilgi edinmek veya kendi web sitenizde kurmak için codeberg.org/susam/wander sayfasına bakabilirsiniz

via= sorgu parametresi adlı hatalı özellik

  • Wander Console 0.4.0 sürümüne, web sayfası yüklenirken via= sorgu parametresi ekleyen bir özellik eklendi
  • Örneğin susam.net/wander/ konsolunda midnight.pub ile karşılaşıldığında sayfa şu URL ile yükleniyordu
https://midnight.pub/?via=https://susam.net/wander/
  • Bu yöntem, önerilen web sitesinin yöneticisinin erişim günlükleri üzerinden ziyaretin Wander Console’dan geldiğini görebilmesini sağlıyordu
  • Özellik, Codeberg’deki bir özellik isteği görüldükten sonra eklendi, ancak başlangıçta tereddüt vardı
  • O sırada cebirsel grafik teorisi araştırmasının teslim tarihi yaklaşıyordu ve Wander Console’un büyük kısmı da araştırma sırasında verilen kısa molalarda yapılmıştı
  • Konsolun ilk sürümü bir sabahın çok erken saatlerinde yaklaşık 1 saat 30 dakikada oluşturuldu; via= özelliği de benzer kısa molalardan birinde uygulandı
  • Susam Pal, küçük hobi projelerine sürekli özellik eklemek yerine kapsamı sınırlı tutmayı ve temel gereksinimler karşılandığında özellikleri tamamlanmış saymayı tercih eden bir bakım yaklaşımını benimsiyor
  • Buna rağmen, yorgunluk ve yoğun araştırma temposu nedeniyle söz konusu özellik isteğini görmezden gelemediğini düşünüyor
  • via= özelliği için kapatılabilir bir ayar vardı, ancak sonradan bunun da hata olduğuna karar verdi
  • Şüpheli özellikler uygulanacaksa bile varsayılan olarak açık olup sonradan kapatılabilir olmamalı; açıkça etkinleştirme yaklaşımı izlenmeli
  • Jurassic Park’taki “Yapıp yapamayacağınıza o kadar odaklandınız ki, yapmanız gerekip gerekmediğini düşünmediniz” sözü bu duruma uyuyor gibi görünüyor

Sorgu dizeleri gerçek URL’leri gerçekten bozuyor

  • via= özelliği uygulandıktan sonra sevdiği bir web sitesindeki bir sayfa konsolda yüklenmedi
  • Sorunlu sayfanın benzer ama biraz farklı URL’leri şunlardı
  • Birinci ve ikinci URL normal şekilde yüklenirken üçüncü URL HTTP 404 hata sayfası döndürüyor
  • İlgili web sitesi, birden fazla yazı tipi koleksiyonundan hangisini göstereceğini belirlemek için sorgu dizesini kullanıyor
  • Rastgele bir sorgu dizesi eklendiğinde site bunu yazı tipi koleksiyonu tanımlayıcısı olarak yorumlamaya çalıştığından sayfa yüklenemiyor
  • Wander Console birinci URL’ye via= sorgu parametresini eklediğinde de sayfa aynı nedenle bozuluyordu
  • URL’yi değiştirdiğinizde, sorgu dizesi eklemek gibi küçük görünen bir değişiklik bile yeni bir URL oluşturur
  • Yeni URL tamamen farklı bir kaynağa işaret edebilir ya da hiçbir kaynağa işaret etmeyebilir
  • Susam Pal, via= sorgu dizesini ekleyerek sevdiği bir web sitesinin doğru URL’sini bozduğuna karar verdi

Referer ve Referrer-Policy’yi baypas etme sorunu

  • Web tarayıcılarında kaynak bilgisi için zaten HTTP Referer başlığı bulunuyor
  • Bu başlık Referrer-Policy tarafından kontrol ediliyor
  • Referrer-Policy sunucu düzeyinde, belge düzeyinde ve tek tek bağlantı düzeyinde ayarlanabiliyor
  • Web standartları, hangi kapsamda kaynak bilgisinin gönderileceğine karar vermek için zaten kasıtlı kontrol mekanizmaları sunuyor
  • URL’ye öneri kaynağını belirtmek için sorgu dizesi ekleme yaklaşımı bu kontrolleri baypas ediyor
  • Bu, gizlilik ve kaynak belirtme meselesini referrer mekanizmasının dışına çıkarıp doğrudan hedef URL’nin içine gömmek anlamına geliyor
  • Bir HTML aracının URL’leri bu şekilde değiştirmemesi gerektiğine karar verdi
  • Kullanıcı adına URL’yi değiştirip öneri kaynağına dair sorgu parametresi ekleme eyleminin kendisinin de doğru olmadığını düşünüyor

Özelliğin kaldırılması ve sonrası için ilke

  • Wander Console’daki öneri kaynağı sorgu dizesi özelliği kaldırıldı
  • Özellik açıkça etkinleştirilen bir seçenek olarak bırakılabilirdi, ancak bunun yanlış bir özellik olduğuna karar verdikten sonra bunu yazılımda hiçbir biçimde tutmak istemedi
  • Proje hâlâ yeni ve 0.x sürüm aşamasında olduğu için özelliği kaldırmak için uygun bir zaman olduğunu düşündü
  • Chris Morgan’ın sorgu dizelerini yasakladım yazısının akış okuyucusunda görünmesini fırsat bilerek araştırma zamanından kısa bir bölüm ayırıp bu özelliği kaldırdı
  • Kaldırma işlemi b26d77c commit’inde görülebilir
  • En güncel sürüm olan 0.6.0 artık bu özelliği içermiyor
  • Bundan sonra yeni hobi projelerinde URL yüklemesi yaparsa, bunu web sitesi yazarının amaçladığı biçimde yükleme ilkesini benimsiyor
  • Başkalarının URL’lerine sorgu dizesi eklememe sonucuna varıyor

1 yorum

 
GN⁺ 2 시간 전
Lobste.rs görüşleri
  • Yazımın nasıl yardımcı olduğunu söylediğin için teşekkürler. Bu kadar ayrıntılı incelemeler yazmamın birkaç nedeni var: kendi tatminim için, asıl projeye yardımcı olmak için ve bazen geliştirici ilgi gösterdiği için, bazen de göstermediği için, ayrıca internette birileri yanıldığı için
    Ama en büyük neden öğretmeyi sevmem ve başkalarının bu incelemeleri okuduğunu bilmem. Nitekim incelemelerim düzenli olarak en çok oy alan yorumlar arasında yer alıyor
    Bazen tanımadığım birinin bıraktığı teşekkür yorumu benim için gerçekten çok değerli oluyor ve bu kadar ayrıntılı bir teşekkür daha da iç ısıtıyor
    Komik olan şu ki siteni ocak ayında keşfettim ve özellikle “more purple links, please”i çok beğenmiştim; bugün fark ettim ki ben farkında olmadan senin duruşunu etkilemişim
    Dün yeni web sitemi yayına aldım ve bundan sonra çeşitli mecralarda çok daha fazla inceleme yayımlamayı düşünüyorum. Geçen ay bu plan hakkında biraz yazmıştım: https://lobste.rs/s/vpdpkq/llm_reviews_cargo_crev#c_8uk441
    Ayrıca ek sorgu dizelerine alerjik tepki veren bir sayfa örneğinin daha zaten var olması biraz şaşırtıcıydı. O sitede yalnızca ilgili sayfa alt sayfa yönlendirmesi için ?1, ?2, ?3, ?4 gibi sorgu dizeleri kullanıyor, diğer sayfalar ise sorgu dizelerini kabul ediyor. Sıralı sayfalama açıkça hiyerarşik olduğundan URL ruhuna ters düşüyor ama ?page=1 gibi kullanım da oldukça yaygın
    Hangi durum kodunu döndüreceğime karar verirken, yanlış bir varsayım yüzünden 404’ün yan etki üretmesinden endişe etmiştim ama belki de bu kaygı abartılıydı. Web’in büyük bir kısmının yolları anlamlı şekilde kullanmadığını unutmuşum

    • Yetkisiz sorgu dizeleri için "418 I'm not a teapot" yanıtı döndürmeyi hiç düşündün mü?
  • Güzel. Wander console harika şekilde büyüyor ve Susam’ın burada gösterdiği özen bunun işe yaramasının büyük bir nedeni gibi görünüyor
    Ben de URL’lerime istenmeyen sorgu dizeleri eklenen birkaç varyasyon gördüm. Programmer Weekly bülteni sorgu ekliyor ama referer başlığı da gönderdiği için bu gereksiz bir tekrar
    Bir başka durumda ise her aboneye özgü bir ID ekleniyor gibi görünüyor; bunu hiç istemiyorum. Can sıkıcı olan, referer olmadığı için bunun hangi siteden geldiğini de bilmiyorum
    /blog/modeling-on-demand-pricing/?ck_subscriber_id=<unique-id>

  • “Bilmek istiyorsan Referer başlığına bakarsın, yoksa muhtemelen bunun bir sebebi vardır” sözüne katılmak isterdim ama Referer birkaç yıldır bir ölçüde bozuk ya da işe yaramaz haldeydi. Bunların ortaya çıkmasının tek nedeni de bu

    • Bunu nasıl kastediyorsun?
  • “Neden ekledim? Halkın talebine boyun eğdim” demek, gerçekten öyle mi? Alakasız bir issue altında 5 oy almış tek bir hafif yorumdu. Boyun eğmeden önce verilen mücadele pek de çetin görünmüyor ;-)

    • Buradaki ‘hafif yorum’ ile ne demek istediğini pek anlamıyorum. O yorumu, yazılımımı gerçekten kullanmış, kendi web sitesine kurmuş ve o siteyi topluluk ağının bir parçası haline getirmiş biri yazmıştı. Bunu ‘hafif’ diye geçiştirmem
      Bu projede kullanıcı sayısı on kişi civarındayken yeni özellik önerisi 5 oy aldıysa, bu bana halkın talebi gibi gelmişti
      Projelerim genelde hobi olarak yaptığım küçük araçlar. Birkaç istisna dışında çok fazla kullanıcıları olmuyor. Bu yüzden özellik isteği ya da hata bildirimi aldığımda, ilgili issue’da olsun ya da olmasın, benim için önemli oluyor. Her zaman hemen üstüne düşemesem de hangi isteğin daha fazla talep gördüğünü aklımın bir köşesine not ediyorum