Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Cross-Site skriptēšana, plaši pazīstama kā XSS, ir viena no visbīstamākajām uzbrukuma metodēm, ko izmanto kibernoziedznieki, tāpēc ir ļoti svarīgi, lai katrs izstrādātājs un drošības pētnieks zinātu, kas tas ir un kā novērstu uzbrukumus. Tātad, kā jūs varat rīkoties pret XSS ievainojamību? Jūs izmantojat HTML, JavaScript vai DOM, lai parādītu datus, ko vietne saņem no lietotāja. Viena vai vairākas no šīm trim dažādajām jomām var darboties kopā.

Kā novērst XSS, izmantojot HTML

XSS ļauj uzbrucējiem ievadīt ļaunprātīgus kodus vai skriptus tīmekļa lapās, mērķējot uz nenojaušajiem lietotājiem, kuri apmeklē vietni. Tas var nozagt personas datus, novirzīt apmeklētājus uz citu vietni, ko izveidojis kibernoziedznieks, vai citādi sabojāt tīmekļa lapas izskatu. Bet jūs varat to novērst; piemēram, pārtraucot HTML ievietošanu.

Iedomājieties, ka jums ir vietne ar viesu grāmatu. Pieņemsim, ka jūsu apmeklētāji, kas izmanto šo viesu grāmatu, var šeit ierakstīt savus vārdus un ziņojumus, un viņu ziņojumus var skatīt publiski. Uzbrucējs, kurš vēlas veikt XSS testu jūsu viesu grāmatā, izmantos jūsu piešķirto apgabalu ziņojuma rakstīšanai. Šis kibernoziedznieks šeit palaidīs JavaScript kodu. Piemēram, uzbrucējs var izmantot JavaScript kodu, piemēram:

instagram viewer

<skripts>brīdināt ("XSS!")</script>

Lai tas būtu veiksmīgs, uzbrucējam ir jāizmanto skripta tags. Ja tā nav, JavaScript kods nedarbosies. Jums ir jāiekodē < priekšraksts, lai lietotāji nekad nevarētu izmantot HTML tagus. Tas apgrūtinās uzbrucēja darbu ar HTML tagiem.

Kā novērst XSS, izmantojot JavaScript

Arī HTML loģika ir tāda derīgs JavaScript. Dažās lietojumprogrammās ir iespējams izdrukāt datus, ko vietne saņem no lietotāja ar JavaScript kodu.

Apsveriet šo kodējumu:

<p id="drukāt"></lpp>
<skripts>
document.getElementById("pārbaude").innerHTML = "";
</script>

Iedomājieties, ka vietnē tiek izmantots koda bloks, piemēram, iepriekš minētais. Izstrādātājs šeit izmantoja tagu "p" ar nosaukumu "print". Kā redzat no koda, vērtība tiks iegūta no parametra "search", un izstrādātājs vēlas parādīt šo ienākošo vērtību tagā "p". Izstrādātājs, kurš veica šo darbību, vēlējās izmantot JavaScript iekšējo HTML līdzekli.

Tagad paskatīsimies uz situāciju no kiberuzbrucēja skatu punkta. Šādā gadījumā uzbrucējs veiks XSS testu tagā "script". Šim nolūkam uzbrucējam nav jārestartē tags, jo jau tiek izmantots tags "skripts". Pēc tam uzbrucējs varētu uzrakstīt šādu testu:

faila nosaukums.php? meklēt=a" brīdināt ("XSS!"); f= "

Šis kods vietnē parādīsies šādi:

document.getElementById("pārbaude").innerHTML = " a" brīdināt ("XSS!"); f="";

Šis uzbrukums būtu veiksmīgs. Lai labāk izprastu problēmu, apskatīsim vēl vienu tehnikas piemēru, ko varētu izmantot uzbrucējs. Hakeris, iespējams, ir piemērojis XSS testu, piemēram:

faila nosaukums.php? meklēt=";</script><em>Fatih</em>

Lūk, kā tas izskatītos, skatoties no vietnes:

document.getElementById("pārbaude").innerHTML = "";</script><em>Fatih</em>";

Tas var šķist nedaudz dīvaini, jo uzbrucējs ir aizvēris pirmo "skripta" tagu, izmantojot tādu struktūru kā "/script". Tādējādi uzbrucējs var restartēt jebkuru JavaScript un HTML kodu, ko viņi vēlas.

Ja padomājat par šiem diviem dažādiem piemēriem, aizsardzība pret XSS šķiet diezgan vienkārša. Nepieciešamais piesardzības pasākums būtu kodēt " un ' rakstzīmes, kuras redzat pirmajā piemērā. Otrajā piemērā iekodējiet rakstzīmes < un >.

Kā novērst XSS, izmantojot DOM

Šajā XSS variantā dati, ko vietne saņem no lietotāja, var traucēt DOM elementa īpašību. Piemēram, informācija par krāsu, ko vietne saņem no lietotāja, var ietekmēt tabulas fona krāsu vai visu lapas fonu. Tātad lietotājs negribot iejaucas korpusa un galda stila izkārtojumos. Labs piemērs tam ir šāds kods:

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

Tādējādi vietne izmanto no lietotāja saņemto parametru "color" tieši elementa "body" rekvizītā "bgcolor". Tātad, ko uzbrucējs varētu darīt šajā brīdī? Viņi varētu izpildīt šo ļaunprātīgo kodu:

faila nosaukums.php? krāsa = sarkana" ielādēt ="brīdināt ('XSS!')

Tas izskatās šādi, skatoties no vietnes:

<body bgcolor=" sarkans" ielādēt ="brīdināt ('XSS!') "/>

Lai tas nenotiktu, izstrādātājam ir jākodē " raksturs.

Tomēr ir vēl viens svarīgs JavaScript elements, kas jāņem vērā. Piemērs tam ir šāds koda fragments:

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

Tas nozīmē, ka kādu JavaScript kodu var palaist tieši. Viens no labākajiem preventīvajiem pasākumiem ir nodrošināt, ka vietne pārbauda, ​​vai dati, ko tā saņem no lietotājiem, ir īsts URL. Vienkāršākā metode ir pārliecināties, vai ir tādi izteicieni kā "HTTP" un "HTTPS" (drošā HTTP versija) savienojumā.

Funkcijas piemērs XSS novēršanai ar PHP

Jūs redzējāt dažus piemērus, kā aizsargāt lietotni vai vietni no XSS uzbrukumiem. Varat izmantot koda fragmentus šajā tabulā ar PHP:

Kodēt HTML

htmlspecialchars ($str, ENT_COMPAT)

Kodēt JavaScript un DOM atribūtā

htmlspecialchars ($str, ENT_NOQUOTES)

URL pārbaude

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

Ņemiet vērā, ka šie ir tikai piemēri un atšķirsies atkarībā no programmatūras valodas, kuru izmantojat.

Jūs varat izveidot tīmekļa lietojumprogrammu ar PHP un izmēģiniet iepriekš redzamos kodus, lai tos nosūtītu īsziņā. Ja vēlaties uzzināt, kā izmantot visas šīs metodes, varat iegūt dažas idejas no tālāk esošā PHP koda bloka, kam vajadzētu būt noderīgam pat tad, ja izmantojat citu valodu:

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

funkcijuin_attribute($str){
atgriezties htmlspecialchars($str, ENT_COMPAT);
// ENT_COMPAT iekodēs dubultpēdiņu (") rakstzīmi.
}

funkcijuin_html($str){
$saite = '/^(((https?)|(\/\/))).*/';
ja(!preg_match($link, $str))
{
atgriezties "/";
}
atgriezties $str;
}

$dati = in_atribūts($dati);
$dati = in_html($dati);
$dati = real_url (dati);
?>

Aizsargājiet savu vietni no XSS un citiem

XSS ir populārs uzbrukuma vektors, ko izmanto hakeri. Parasti ceļa vērtību vietrādī URL, jebkurā vietnes laukā, kurā var ievadīt datus (piemēram, veidlapas un komentāru lauki), var izmantot, lai pārbaudītu, vai nav XSS ievainojamības. Taču, protams, ir daudz dažādu metožu, ko kibernoziedznieki var izmantot, lai uzbruktu vietnei, it īpaši, ja jums ir vietne, kurā ir daudz lietotāju un kurā tiek slēpta viņu informācija.