Eu, trebuie să recunosc, n-am știut până în acest moment că acesta este comportamentul default.
Nu pot să găsesc o explicație de ce ai face acest comportament default și nu invers.
Mai rău este că, spre exemplu, dacă eu deschid o pagină cu target="_blank" de pe devforum, și apoi pe pagina deschisă eu navighez pe orice site, acel site are acces la window.opener.location. Mi se pare extrem de stupid!
Deci nu merge sa accesezi documentul. Dar da, face ca phishing-ul sa aiba succes poate ceva mai mare, dar daca te gandesti, cei care cad in plasa sunt aceeasi care ar pica si fara windows.opener.location
Cel mai “periculos” e window.opener.location.assign()
Regula de baza e cand esti intrebat de user/password, trebuie sa te uiti la URL-ul din addressbar.
Foarte adevărat, nu poți să accesezi absolut nimic din pagina respectivă, nici măcar URL-ul (deși poți să vezi document.referrer ca să-ți dai seama de unde au venit utilizatorii).
Întrebarea mea este: ce beneficii aduce acest lucru încât să-l lași ca și comportament default? Asta mă deranjează pe mine.
Nu cred că am văzut nicăieri un atac mai “nedetectabil” decât acesta. Poți să fii foarte creativ, astfel încât nici măcar să nu apară iconița de loading.
Poate îmi scapă mie ceva, dar nu mi se pare un argument bun să spui că cei care cad în plasă sunt aceeași care ar pica și fără windows.opener.location când clar îl face MULT mai nedetectabil decât alte metode și fără un alt beneficiu… practic este un cadou din partea browserelor pentru cei care fac phishing pe ideea că… dacă oricum sunt mulți care cad în plasă, de ce să nu fie mai mulți?
Și nu e vorba doar de phishing, e vorba de flowul tău ca user normal. Să zicem că accesez un link de pe Facebook (nu au făcut nimic în acest sens) și intru pe alt site, când mă întorc pe tabul cu Facebook, mă aștept să fie același lucru, nu mă aștept să fie ceva pagina de porn sau reclame.
Îmi înscriu o reclama pe Facebook Ads la siteul X pe care pun un window.opener.location către siteul Y. Reclamă la două siteuri la preț de unu.
Și revin din nou cu întrebarea, DE CE? De ce să lași default așa ceva, de ce nu este invers? Să pui un atribut în plus când vrei să se comporte așa?
Don’t use target=_blank (or any other target that opens a new navigation context), especially for links in user-generated content, unless you have a good reason to.
Schimbăm scenariul, pun reclamă la siteul X, userul întra pe site apoi navighează pe siteul Y (care nu face parte din Facebook Ads) și din siteul Y eu folosesc window.opener.location. Ce mai face Facebook în acest moment?
Din păcate trebuie să plec și nu am apucat să studiez problema foarte bine. Poate chiar există un motiv pentru acest comportament dar nu-l văd eu momentan.
Mi se pare stupid să lași așa ceva ca default, și mi se pare stupid ca Facebook să nu facă nimic în acest sens pentru linkurile puse de useri / reclame. Nu aduce nici un plus, doar riscuri de securitate GRATIS.
Înțeleg că există cazuri când este util, dar nu cred că atunci când userul pune linkurile respective.
Hmm, deci tu spui ca daca user-ul navigheaza de pe Facebook pe X cu _target=blank, apoi user-ul navigheaza (tot cu target=_blank?) de pe X pe Y, si in Y chemi window.opener.location vei putea modifica tab-ul cu Facebook?
Nu cred, ai 2 navigari, cand checmi pe Y window.opener.location va fi pentru tab-ul X.
Userul deschide pe Facebook siteul X, apoi pe tabul respectiv oriunde navigheaza, pe orice site, fie că dă click, fie că scrie el URLul, fie că dă click pe bookmark, pe orice site întră, are setat window.opener ca fiind tabul cu facebook, și poate să schimbe locația.
Deci, o dată ce un tab a fost deschis cu target="_blank", acel tab o să aibă pe toată durata lui window.opener setat (dacă nu îl setează null de la început, sau vreun site pe parcurs) și astfel orice site pe care intri din acel tab poate să-ți schimbe “location”. Fain, nu? Logic, nu?
Sunt curios în cât timp se prind “programatorii” de siteuri la kilogram (manele download și alte chestii, știți și voi genul ăsta de siteuri) de treaba asta să redirecționeze toate taburile în toate direcțiile. Nu te oprește nimeni să-ți pui un if, dacă ai acces la tab, să faci redirect (nu scriu codul că cine știe câte copy pasteuri și apare peste tot apoi ).
Aceasta metoda de phishing e destul de cunoscuta pentru cei care activeaza in domeniul securitatii si se numeste Tab Napping, ea fiind descoperita acum 5-6 ani. Si da, functioneaza pe Facebook, Google, Yahoo etc. Un articol destul de interesant pe tema asta gasiti aici.
nu-l poti modifica daca e same domain. in poti doar redirecta
folosesc si eu chestia asta pentru http://onboardx.com pentru promovare dar doar daca se trimite referer-ul pentru ca omul sa poata reveni unde era
Sunt curios dacă problema se rezolvă printr-un redirect. Adică ce se întâmplă dacă toate link-urile externe le trec prin devforum.ro?redirect=http://encoded%20url și deschid acest proxy într-un tab nou?
Am observat că facebook deschide în acest fel toate url-urile, poate ăsta e motivul?
Poate folosesti _parent sa incarci tot felul de site-uri… astfel, ca ad network, poti incarca 6 site-uri timp de 3 secunde, iei banii de la 6 fraieri si ii platesti unui singur fraier. (Mai in gluma, mai in serios, aparent asa se fac afacerile, in ziua de azi…) Disclaimer: Adresarea din paragraful anterior este un pamflet si trebuie tratata ca atare.
Lasand gluma la o parte, poate fi de folos si la black hat seo.
Daca dau click pe Facebook la un link catre alt site, in tab-ul care se deschide pot seta window.opener.location, deci nu vad ca Facebook sa faca ceva.
Singurele solutii ca sa faci ca window.opener.location sa nu mearga sunt in articolul din link-ul ala.