Guida su come fixare le XSS

 

Per fixare il problema delle xss dobbiamo usare una delle 2 funzioni di php.

Querste funzioni non fanno altro che ripulire il codice HTML, ovvero i tag, per non far si’ che questi vengano iniettati nel codice.

La funzione piu’ utilizzata è htmlspecialchars() che tramuta tutti i caratteri < e > in &lt; e &gt;

Un’altra opzione è htmlentities() che sostituisce tutti i caratteri nelle corrispondenti entita’.


<?
// questa pagina mostra un esempio
// delle differenze di output tra le 2 funzioni

$input = ‘<script>alert(1);</script>’;

echo htmlspecialchars($input) . ‘<br />’;
echo htmlentities($input);

?>
Un esempio di htmlentities()


<?php
$str = "A 'quote' is <b>bold</b>";

echo htmlentities($str);
echo htmlentities($str, ENT_QUOTES);
?>
Il primo visualizzera’ –> A ‘quote’ is &lt;b&gt;bold&lt;/b&gt;
Il secondo –> A ‘quote’ is &lt;b&gt;bold&lt;/b&gt;

Esempio di uso di htmlspecialchars()


<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new;
?>

Questo visualizzera’ –> &lt;a href=’test’&gt;Test&lt;/a&gt;

La funzione strip_tags(), invece, elimina tutti gli elementi html, tranne alcuni elementi consentiti che bisogno specificare come ad esempio <i>, <b> o <p>.

Esempio di uso di strip_tags()


<?php
$text = '<p>Test paragraph.</p><!-- Comment --> Other text';
echo strip_tags($text);

echo “\n”;
// allow <p>
echo strip_tags($text, ‘<p>’);
?>
Ora che sappiamo per lo meno che esistono queste funzioni gia’ belle e pronte dobbiamo andarle ad applicare nel codice quando troviamo una xss sulla nostra web application.

Recentemente ho trovato una xss sul mio sito in una sezione dei video di GoogleBig che altro non e’ che un plugin di Mybb, vi posto una porzione di codice per rendere l’idea di come ho dovuto applicare la funzione per far si’ che nella ricerca dei video venissero filtrati i tag html.

Troviamo prima di tutto la pagina in questione: search.php

Ora andiamoci a cercare la porzione di codice che rende disponibile la ricerca, la query e l’output del risultato della query:


function search($query, $page)

{

global $db, $bgcolor2, $bgcolor4, $sitename, $io_db, $module_url, $list_page_items, $hm_index;

$option = trim($option);

$query = trim($query);

$query = FixQuotes(nl2br(filter_text($query)));

$db->escape_string($query);

$db->escape_string($option);

alpha_search($query);

In questo caso la variabile che passa i valori è $query quindi andiamo ad applicare la funzione htmlentities():

$query = FixQuotes(nl2br(filter_text(htmlentities($query))));

Autore: Langy

Torna alla HomePage 

7 risposte a “Guida su come fixare le XSS

  1. Ottimo post davvero interessante e molto pulito…
    red ma posso applicare queste stringhe anche creandomi un file php…
    e fare l include o devo applicarle perforza hai campi di ricerca get post e cosi via….
    esempio:
    <?php
    $input = str_replace(”‘”, “”, $_GET['query']); #cancella il carattere ‘ dalla variabile
    $input = str_replace(’”‘, “”, $input); #cancella il carattere ” dalla variabile
    $input = htmlentities($input); #sostituisce i caratteri
    ?>
    cosi dovrei pulire il tutto mi sembra giusto…
    ma in un campo di ricerca o get o post… dove dovrei inserire tali stringhe…

  2. Scusa red….. se ti posto un codice saresti in grado di proteggermelo…
    e del codice con dei campi di ricerca dovrei proteggerlo con un htmlentities senza ricorrere a dei sentinel che pare non proteggano abbastanza bene anzi……. se ce la fai fammi sapere…..

  3. no dal semplice fatto che dovresti saperlo fare tu…
    hai letto la guida, applica quello che hai letto, non hai ancora capito ?
    cerca altre guide, effettue delle prove.
    Se te lo faccio io tu non impari niente.😉

  4. Hi there, I found your web site by means of Google at the same time as looking for a similar topic,
    your website came up, it seems good. I have bookmarked it
    in my google bookmarks.
    Hello there, just was alert to your blog via Google, and found that it is truly informative.
    I am going to watch out for brussels. I’ll appreciate in case you proceed this in future. Many folks can be benefited from your writing. Cheers!

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...