Topp 10 Lettlandsbaserade mjukvaruutvecklingsföretag
Läs mer om Lettlands främsta mjukvaruutvecklingsföretag och deras innovativa lösningar i vår senaste artikel. Upptäck hur dessa teknikledare kan hjälpa till att lyfta ditt företag.
Att använda webbapplikationer har blivit en självklarhet i alla samhällen. Vi hanterar dem varje dag. Man kan säga att de omger oss. Vi använder dem i arbetet, för underhållning och som verktyg för att kommunicera med andra. Ofta inser vi som användare och utvecklare inte hur många säkerhetsproblem som upptäcks varje dag i sådana applikationer.
Nyligen har vi skrivit om säkerhet för webbapplikationer när det gäller XSS-sårbarhet. Den här gången vill vi uppmärksamma er på en annan fara.
Den sårbarhet som diskuteras i detta dokument har funnits länge och på grund av sin enkelhet underskattas den ofta eller är till och med okänd av vissa utvecklare av webbapplikationer.
Nästan alla webbapplikationer innehåller länkar som, när man klickar på dem, öppnas i en ny flik för att inte stänga fliken med den ursprungliga sidan. Detta är ett önskat beteende eftersom skaparna vill att användaren ska tillbringa så mycket tid som möjligt i applikationen.
En attack som utnyttjar denna sårbarhet är så kallad "reverse tabnabbing". Det är en attack där en sida som är länkad från målsidan kan ersätta den sidan med till exempel en phishing-sida.
window.opener.location = "https://phishing-website/facebook.com";
Så vi kan ändra den överordnade fliken från den infekterade målsidan med hjälp av ett fönsterobjekt från Web API. Vanligtvis innebär en attack att man använder flera upptäckta sårbarheter och phishing-bedrägerier parallellt.
När vi öppnar en ny flik i webbläsaren med hjälp av en länk med mål="_blank"
attribut har vi tillgång till vår "referrer" från den nya fliken. Mer specifikt, till öppnare
egenskapen hos Fönster
objekt, som returnerar en referens till fönstret som öppnade det, vår överordnade sida.
Detta beror på beteendet hos Fönster.öppna()
funktion. Med tillgång till detta attribut kan vi enkelt ersätta vår föräldrasida. Observera att vissa moderna webbläsare kan göra fönster.öppnare
funktion i målfliken som noll
för att förhindra detta beteende.
<code> <a href="https://github.com" target="_blank">Gå till GitHub - infekterad länk</a>
konst if (länk) link[0].onclick = () => { if (window) window.opener.location = 'https://stackoverflow.com' }
Ovan kan du se den infekterade länken som ursprungligen öppnar en ny flik med en GitHub-sida men under tiden ändrar den vår "överordnade" sida till Stackoverflow-webbplatsen.
1. HTML-länkar
Lägg till rel="noopener noreferrer"
till <a>
tagg.
Den rel
attributet definierar förhållandet mellan en länkad resurs och det aktuella dokumentet.
noopener
säger till webbläsaren att navigera till målet utan att ge åtkomst till den förälder som öppnade det. Fliken Mål Fönsteröppnare
kommer att vara noll
.
noreferrer
förhindrar att webbläsaren, när den navigerar till målet, skickar adressen eller något annat värde som referrer till föräldern via referent
HTTP-rubrik. Observera att namnet på detta HTTP-huvud avsiktligt är felstavat som "referrer".
2. JavaScript Länkar
För JavaScript Fönster.öppna
funktionen kan du lägga till värdena noopener
och noreferrer
i fönsterFunktioner
parametern för Fönster.öppna
funktion men olika webbläsare kan reagera olika så det rekommenderas att göra Fönsteröppnare
som noll
efter användning Fönster.öppna()
funktion.
Läs mer på engelska:
Rails API & CORS. Ett stänk av medvetenhet
Strategier för datahämtning i NextJS
7 skäl till varför din webbutik behöver Magento
Om du tycker att den här artikeln är intressant kan du följa Lukasz på Github: https://github.com/twistezo