Google neden bir s├╝re ├Ânce haz─▒rl─▒yor? JSON yan─▒tlar─▒na?


Al─▒nan cevaba git


Google neden while(1); (├Âzel) JSON yan─▒tlar─▒na haz─▒rlan─▒yor?

├ľrne─čin, Google TakvimÔÇÖde bir takvimi a├ž─▒p kapat─▒rken yan─▒t :

 while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],
  ['remindOnRespondedEventsOnly','true'],
  ['hideInvitations_remindOnRespondedEventsOnly','false_true'],
  ['Calendar ID stripped for privacy','false'],['smsVerifiedFlag','true']]]]
 

Bunun insanlar─▒n eval() ├╝zerinde bir ┼čey yapmas─▒n─▒ engellemek oldu─čunu varsayard─▒m , ama tek yapman gereken tek ┼čey yerini almak while ve sonra sen kurulmakt─▒r. De─čerlendirmeyi ├Ânlemenin, insanlar─▒n g├╝venli JSON ayr─▒┼čt─▒rma kodu yazd─▒─č─▒ndan emin olmak oldu─čunu varsayard─▒m.

Bunun birka├ž ba┼čka yerde de kullan─▒ld─▒─č─▒n─▒ g├Ârd├╝m, ancak Google'da ├žok daha fazlas─▒ (Mail, Takvim, Ki┼čiler, vb.) Garip bir ┼čekilde, Google Dok├╝manlar onunla ba┼čl─▒yor &&&START&&& ve Google Ki┼čileri ba┼čl─▒yor gibi g├Âr├╝n├╝yor while(1); &&&START&&& .

Burada neler oluyor?


3918





2010-04-19




Cevap say─▒s─▒n─▒ say: 6






ECMAScript 5 ile 2011'den beri t├╝m b├╝y├╝k taray─▒c─▒larda resmi olarak giderilen ├Ânemli bir JSON g├╝venlik sorunu olan JSON'un ka├ž─▒r─▒lmas─▒n─▒ ├Ânler .https://security.stackexchange.com/questions/155518/why-json-hijacking-attack-doesnt-work-in-modern-browsers-how-was-it-fixedhttps://caniuse.com/%23feat%3Des5#feat=es5

Kabul edilen ├Ârnek: GoogleÔÇÖ─▒n, mail.google.com/json?action=inbox gelen kutunuzun ilk 50 mesaj─▒n─▒ JSON bi├žiminde d├Ând├╝ren bir URLÔÇÖsi oldu─čunu s├Âyleyin . Di─čer etki alanlar─▒ndaki k├Ât├╝ web siteleri, ayn─▒ k├Âken politikas─▒ nedeniyle bu verileri almak i├žin AJAX istekleri yapamaz, ancak URLÔÇÖyi bir <script> etiketle i├žerebilir . URL ile ziyaret edilir sizin ├žerezler ve taraf─▒ndan Global dizi yap─▒c─▒s─▒ veya eri┼čim y├Ântemine ge├žersiz k─▒lma onlar─▒ JSON i├žeri─čini okumak i├žin izin, bir y├Ântem bir nesne (dizi veya karma) ├Âzniteli─či ayarlanm─▒┼č her ├ža─čr─▒da olabilir.

Bu while(1); veya bunu &&&BLAH&&& ├Ânler: adresindeki bir AJAX iste─či mail.google.com , metin i├žeri─čine tam eri┼čime sahip olacak ve onu kald─▒rabilir. Ancak bir <script> etiket ekleme i┼člemi, JavaScript'i k├Âr bir ┼čekilde, herhangi bir i┼člem yapmadan y├╝r├╝t├╝r; bu, sonsuz bir d├Âng├╝ veya bir s├Âzdizimi hatas─▒yla sonu├žlan─▒r.

Bu, siteler aras─▒ talep sahtecili─či meselesi konusunu ele almamaktad─▒r .


4166


2010-04-19





JSON ka├ž─▒rma yoluyla yan─▒t─▒n a├ž─▒klanmas─▒n─▒ ├Ânler.

Teoride, HTTP yan─▒tlar─▒n─▒n i├žeri─či Ayn─▒ K├Âken ─░lkesi taraf─▒ndan korunmaktad─▒r: bir etki alan─▒ndaki sayfalar, di─čer etki alan─▒ndaki sayfalardan hi├žbir bilgi alamaz (a├ž─▒k├ža izin verilmedik├že).

Sald─▒rgan, sizin ad─▒n─▒za di─čer alan adlar─▒nda sayfalar isteyebilir, ├Ârne─čin bir <script src=...> veya <img> etiketi kullanarak , ancak sonu├ž hakk─▒nda herhangi bir bilgi alamaz (ba┼čl─▒klar, i├žerikler).

Bu nedenle, bir sald─▒rgan─▒n sayfas─▒n─▒ ziyaret ederseniz, e-postan─▒z─▒ gmail.com adresinden okuyamad─▒.

JSON i├žeri─čini istemek i├žin bir komut dosyas─▒ kullan─▒rken, JSON sald─▒rgan─▒n kontrol etti─či bir ortamda Javascript olarak y├╝r├╝t├╝l├╝r. Sald─▒rgan, Dizi veya Nesne yap─▒c─▒s─▒n─▒ veya nesne olu┼čturma s─▒ras─▒nda kullan─▒lan ba┼čka bir y├Ântemi de─či┼čtirebilirse, JSON'daki herhangi bir ┼čey sald─▒rgan─▒n kodundan ge├žer ve a├ž─▒klan─▒r.

Bunun, JSON'un ayr─▒┼čt─▒r─▒ld─▒─č─▒ zaman de─čil, Javascript olarak ├žal─▒┼čt─▒r─▒ld─▒─č─▒ s─▒rada ger├žekle┼čti─čini unutmay─▒n.

Birden fazla ├Ânlem var:

JSON'un asla ├žal─▒┼čmad─▒─č─▒ndan emin olma

while(1); JSON verilerinin ├Ân├╝ne bir ifade koyarak , Google, JSON verilerinin asla Javascript olarak ├žal─▒┼čt─▒r─▒lmamas─▒n─▒ sa─člar.

Yaln─▒zca me┼čru bir sayfa i├žeri─čin tamam─▒n─▒ alabilir while(1); , geri alabilir ve geri kalan─▒ JSON olarak ayr─▒┼čt─▒rabilir.

Yap─▒lacaklar sever for(;;); ayn─▒ sonu├žlarla, ├Ârne─čin Facebook'ta en g├Âr├╝lmektedir.

JSON'un ge├žerli olmad─▒─č─▒ndan emin olmak

Benzer ┼čekilde, JSON'dan ├Ânce ge├žersiz belirte├žler eklemek &&&START&&& , onun asla ├žal─▒┼čt─▒r─▒lmamas─▒n─▒ sa─člar.

JSON'u her zaman d─▒┼čar─▒da bir Nesne ile d├Ând├╝r├╝n

Bu, JSON ka├ž─▒rma olaylar─▒ndan korunmak i├žin OWASP ├Ânerilen bir y├Ântemdir ve daha az m├╝dahaleci olan─▒d─▒r.

├ľnceki kar┼č─▒ ├Ânlemlere benzer ┼čekilde, JSON'un asla Javascript olarak ├žal─▒┼čt─▒r─▒lmamas─▒n─▒ sa─člar.

Javascript'te bir ┼čey olmad─▒─č─▒nda ge├žerli bir JSON nesnesi ge├žerli de─čildir:

 eval('{"foo":"bar"}')
// SyntaxError: Unexpected token :
 

Ancak bu ge├žerli JSON:

 JSON.parse('{"foo":"bar"}')
// Object {foo: "bar"}
 

Bu nedenle, her zaman cevab─▒n en ├╝st├╝nde bir Nesne d├Ând├╝rd├╝─č├╝n├╝zden emin olun, JSON'un ge├žerli bir Javascript olmad─▒─č─▒ndan emin olun.

Yorumlarda @hvd taraf─▒ndan belirtildi─či gibi, bo┼č nesne {} ge├žerli Javascript'tir ve nesnenin bo┼č oldu─čunu bilmek de─čerli bilgi olabilir.

Yukar─▒daki y├Ântemlerin kar┼č─▒la┼čt─▒r─▒lmas─▒

OWASP yolu daha az m├╝dahalecidir, ├ž├╝nk├╝ m├╝┼čteri k├╝t├╝phanesi de─či┼čikli─či gerektirmez ve ge├žerli bir JSON aktar─▒r. Bununla birlikte, ge├žmi┼č veya gelecekteki taray─▒c─▒ hatalar─▒n─▒n bunu yenebilece─či kesin de─čildir. @Oriadam taraf─▒ndan belirtildi─či gibi, bir hata i┼čleme s─▒ras─▒nda bir ayr─▒┼čt─▒rma hatas─▒ durumunda verilerin (├Ârne─čin window.onerror) s─▒zd─▒r─▒lm─▒┼č olup olmad─▒─č─▒ a├ž─▒k de─čildir.

Google'─▒n yolu, otomatik seri hale getirmeyi desteklemesi i├žin istemci kitapl─▒─č─▒n─▒ gerektirir ve taray─▒c─▒ hatalar─▒ a├ž─▒s─▒ndan daha g├╝venli oldu─ču d├╝┼č├╝n├╝lebilir.

Her iki y├Ântem de, geli┼čtiricilerin yanl─▒┼čl─▒kla savunmas─▒z JSON g├Ândermelerini ├Ânlemek i├žin sunucu taraf─▒ de─či┼čiklikleri gerektirir.


535







Bu, di─čer baz─▒ sitelerin verilerinizi ├žalmaya ├žal─▒┼čmak i├žin k├Ât├╝ numaralar yapamamas─▒n─▒ sa─člamakt─▒r. ├ľrne─čin , dizi yap─▒c─▒s─▒n─▒ de─či┼čtirerek , ard─▒ndan bu JSON URL'sini bir <script> etiketle dahil ederek , k├Ât├╝ niyetli bir ├╝├ž├╝nc├╝ taraf sitesi, JSON yan─▒t─▒ndaki verileri ├žalabilir. while(1); Ba┼člang─▒├žta bir koyarak , komut dosyas─▒ ask─▒da kalacakt─▒r.

├ľte yandan, XHR ve ayr─▒ bir JSON ayr─▒┼čt─▒r─▒c─▒s─▒ kullanan ayn─▒ site iste─či, while(1); ├Ân eki kolayca g├Âz ard─▒ edebilir .


358







Bu, ├╝├ž├╝nc├╝ taraf─▒n JSON yan─▒t─▒n─▒ <script> etiketli bir HTML belgesine eklemesini zorla┼čt─▒rmak olacakt─▒r . <script> Etiketin Ayn─▒ Men┼če Politikas─▒ndan muaf oldu─čunu unutmay─▒n .


106







Not : 2019 itibariyle, bu soruda tart─▒┼č─▒lan ├Ânleyici ├Ânlemlere yol a├žan eski g├╝venlik a├ž─▒klar─▒n─▒n ├žo─ču, art─▒k modern taray─▒c─▒larda bir sorun de─čildir. A┼ča─č─▒daki cevab─▒ tarihsel bir merak olarak b─▒rakaca─č─▒m, ancak ger├žekten soruldu─čunda 2010'un (!!) ba┼č─▒ndan beri t├╝m konu k├Âkl├╝ bir ┼čekilde de─či┼čti.


Basit bir <script> etiketin hedefi olarak kullan─▒lmas─▒n─▒ ├Ânler . (Eh, onu engellemez, ancak onu rahats─▒z edici k─▒lar.) Bu ┼čekilde k├Ât├╝ adamlar bu betik etiketini kendi sitelerine koyamazlar ve i├žeri─činizi getirmeyi m├╝mk├╝n k─▒lmak i├žin aktif bir oturuma g├╝venirler.

d├╝zenle - yorumu not edin (ve di─čer cevaplar─▒). Meselenin, ├Âzellikle de in┼čaat├ž─▒lar Object ve y─▒k─▒lm─▒┼č yerle┼čik tesislerle ilgisi var Array . Bunlar de─či┼čtirilebilir, aksi takdirde zarars─▒z JSON ayr─▒┼čt─▒r─▒ld─▒─č─▒nda sald─▒rgan kodunu tetikleyebilir.


78







Yana <script> etiket web d├╝nyas─▒nda bir g├╝venlik zorunluluktur Ayn─▒ K├Âkeni Politikas─▒ muaf olup, while(1) JSON yan─▒t─▒ ├Ânler eklendi─činde i├žinde bunu k├Ât├╝ye <script> etiketi.


10



─░lgili yay─▒nlar


Neden 0.1f'yi 0'a de─či┼čtirmek performans─▒ 10x yava┼člat─▒yor?

ÔÇťNpm installÔÇŁ neden package-lock.json dosyas─▒n─▒ yeniden yaz─▒yor?

Google + 1 neden fare hareketlerimi kaydediyor? [kapal─▒]

JSON yan─▒t─▒n─▒ Swift'deki Alamofire API'sinden nas─▒l ayr─▒┼čt─▒r─▒r─▒m?

Http.Get'ten JSON yan─▒t─▒ nas─▒l al─▒n─▒r

Google.load neden sayfam─▒n bo┼č kalmas─▒na neden oluyor?

PHP neden 0'─▒n bir dizgeye e┼čit oldu─čunu d├╝┼č├╝n├╝yor?

C# system.net.webrequest kullanarak json yan─▒t─▒ nas─▒l al─▒n─▒r?

Gcc neden arg├╝manlar─▒n arg├╝mans─▒z olarak tan─▒mlanm─▒┼č bir fonksiyona ge├žirilmesine izin veriyor?

Bu Scala kodunda yap─▒lan k├╝├ž├╝k bir de─či┼čiklik neden performansta ├žok b├╝y├╝k bir fark yarat─▒yor?

Etiketle ilgili di─čer sorular [javascript]


Bir listenin bo┼č olup olmad─▒─č─▒n─▒ nas─▒l kontrol ederim?

Silinen dosyalar─▒ haz─▒rlama

silinen uzak dallarla orijinden al─▒n─▒r m─▒?

Global Mutex'i C# ile kullanmak i├žin iyi bir kal─▒p nedir?

C++ 'da extern ne zaman kullan─▒l─▒r?

Saf JavaScript: jQuery's isNumeric () [duplicate] gibi bir i┼člev

MISCONF Redis, RDB anl─▒k g├Âr├╝nt├╝lerini kaydetmek i├žin yap─▒land─▒r─▒ld─▒

Son sayfaya nas─▒l geri d├Ân├╝l├╝r

VSCode: Edit├Âr├╝n Dikey Olarak Nas─▒l B├Âl├╝nece─či

Birle┼čtirme i┼čleminden sonraki taahh├╝tte Git hatas─▒ - ├Âl├╝mc├╝l: bir birle┼čtirme s─▒ras─▒nda k─▒smi bir i┼člem yapam─▒yor