Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Cross-Site Scripting, viden kjent som XSS, er en av de farligste angrepsmetodene som brukes av nettkriminelle, så det er viktig at alle utviklere og sikkerhetsforskere vet hva det er og hvordan forhindre angrep. Så hvordan kan du iverksette tiltak mot XSS-sårbarheten? Du bruker HTML, JavaScript eller DOM for å vise dataene et nettsted mottar fra brukeren. Ett eller flere av disse tre ulike områdene kan fungere sammen.

Hvordan forhindre XSS ved hjelp av HTML

XSS lar angripere injisere ondsinnede koder eller skript inn på nettsider, rettet mot intetanende brukere som besøker nettstedet. Dette kan stjele personlige data, omdirigere besøkende til et annet nettsted satt opp av nettkriminelle, eller på annen måte tukle med utseendet til nettsiden. Men du kan forhindre at dette skjer; for eksempel ved å stoppe dem fra å sette inn HTML.

Tenk deg at du har en nettside med gjestebok. La oss si at de besøkende som bruker denne gjesteboken kan skrive navn og meldinger her, og meldingene deres kan ses offentlig. En angriper som ønsker å foreta en XSS-test i gjesteboken din vil bruke området du har tildelt for å skrive en melding. Den nettkriminelle vil kjøre en JavaScript-kode her. For eksempel kan en angriper bruke JavaScript-kode som:

instagram viewer

<manus>varsling("XSS!")</script>

Angriperen må bruke en skriptkode for at dette skal lykkes. Hvis de ikke gjør det, vil ikke JavaScript-koden fungere. Du må kode

Hvordan forhindre XSS ved å bruke JavaScript

Logikken i HTML er det også gyldig i JavaScript. I noen applikasjoner er det mulig å skrive ut data som nettstedet mottar fra brukeren med en JavaScript-kode.

Tenk på denne kodingen:

<p id="skrive ut"></s>
<manus>
document.getElementById("test").innerHTML = "";
</script>

Tenk deg at et nettsted bruker en kodeblokk som den ovenfor. Utvikleren brukte en "p"-tag kalt "print" her. Som du kan se av koden, vil en verdi komme fra «søk»-parameteren, og utvikleren ønsker å vise denne innkommende verdien i «p»-taggen. Utvikleren som gjorde denne operasjonen ønsket å bruke innerHTML-funksjonen til JavaScript.

La oss nå se på situasjonen fra cyberangriperens synspunkt. I et slikt tilfelle vil angriperen utføre en XSS-test innenfor "script"-taggen. For dette trenger ikke angriperen å starte taggen på nytt, fordi en "script"-tagg som allerede er i bruk. Angriperen kunne da skrive en test som dette:

filnavn.php? søk=a" varsling("XSS!"); f= "

Denne koden vil vises på nettstedet som:

document.getElementById("test").innerHTML = " en" varsling("XSS!"); f="";

Det angrepet ville være vellykket. For bedre å forstå problemet, la oss undersøke enda et eksempel på teknikk en angriper kan bruke. Hackeren kan ha brukt en XSS-test som:

filnavn.php? søk=";</script><em>Fatih</em>

Slik vil det se ut fra nettstedet:

document.getElementById("test").innerHTML = "";</script><em>Fatih</em>";

Dette kan virke litt rart fordi angriperen har lukket den første "script"-taggen ved å bruke en struktur som "/script" her. Så angriperen kan starte hvilken som helst JavaScript- og HTML-kode på nytt.

Hvis du tenker på disse to forskjellige eksemplene, virker det ganske enkelt å beskytte mot XSS. Den nødvendige forholdsregelen ville være å kode " og ' tegnene du ser i det første eksemplet. I det andre eksemplet, kode tegnene < og >.

Hvordan forhindre XSS ved å bruke DOM

I denne varianten av XSS kan dataene som nettstedet mottar fra brukeren forstyrre egenskapen til et DOM-element. For eksempel kan fargeinformasjonen som nettstedet mottar fra brukeren påvirke bakgrunnsfargen til en tabell eller hele bakgrunnen på siden. Så brukeren forstyrrer uforvarende stiloppsettene til kroppen og bordet. Følgende kode er et godt eksempel på dette:

<body bgcolor="<?php echo $_GET['farge']; ?>"/>

Med dette bruker nettstedet "color"-parameteren mottatt fra brukeren direkte i "bgcolor"-egenskapen til "body"-elementet. Så hva kan en angriper gjøre på dette tidspunktet? De kan kjøre denne ondsinnede koden:

filnavn.php? farge=rød" pålasting="varsling('XSS!')

Dette ser slik ut når det vises fra nettstedet:

<body bgcolor=" rød" pålasting="varsling('XSS!') "/>

For å forhindre at dette skjer, må utvikleren kode " karakter.

Det er imidlertid et viktig element i JavaScript å merke seg. Følgende kodebit er et eksempel på dette:

<a href="javascript: varsel('XSS!')">

Dette betyr at det er mulig å kjøre noe JavaScript-kode direkte. En av de beste forebyggende tiltakene er å sørge for at nettstedet sjekker om dataene den mottar fra brukere er en ekte URL. Den enkleste metoden er å sørge for at det finnes uttrykk som "HTTP" og "HTTPS" (den sikre versjonen av HTTP) i forbindelsen.

En eksempelfunksjon for å forhindre XSS med PHP

Du har sett noen eksempler på hvordan du beskytter en app eller et nettsted mot XSS-angrep. Du kan bruke kodebitene i denne tabellen med PHP:

Kode i HTML

htmlspecialchars($str, ENT_COMPAT)

Kod inn JavaScript og DOM-attributt

htmlspecialchars($str, ENT_NOQUOTES)

URL-kontroll

'/^(((https?)|(\/\/))).*/';

Merk at dette bare er eksempler og vil variere avhengig av programvarespråket du bruker.

Du kan lage en nettapplikasjon med PHP og prøv kodene du ser ovenfor for å sende dem tekst. Hvis du lurer på hvordan du bruker alle disse metodene, kan du få noen ideer fra PHP-kodeblokken nedenfor, som bør være nyttig selv om du bruker et annet språk:

<?php
$data = $_GET['data'];

funksjonin_attribute($str){
komme tilbake htmlspecialchars($str, ENT_COMPAT);
// ENT_COMPAT vil kode det doble anførselstegn (").
}

funksjonin_html($str){
$link = '/^(((https?)|(\/\/))).*/';
hvis(!preg_match($link, $str))
{
komme tilbake "/";
}
komme tilbake $str;
}

$data = in_attribute($data);
$data = in_html($data);
$data = real_url (data);
?>

Beskytt nettstedet ditt mot XSS og mer

XSS er en populær angrepsvektor som brukes av hackere. Vanligvis kan en baneverdi i URL-en, et hvilket som helst felt på nettstedet ditt der data kan legges inn (som skjemaer og kommentarfelt), brukes til å teste for en XSS-sårbarhet. Men selvfølgelig er det mange forskjellige metoder nettkriminelle kan bruke for å angripe et nettsted, spesielt hvis du har et nettsted som har mange brukere og skjuler informasjonen deres.