Visualizzazione risultati 1 fino 15 di 15

Discussione: [Sicurezza] XSS nel box per i commenti (era: <script>alert("xss-test")....)

  1. #1
    Data registrazione
    11-07-2009
    Residenza
    Roma
    Messaggi
    163

    Predefinito [Sicurezza] XSS nel box per i commenti (era: <script>alert("xss-test")....)

    Ragazzi scusate ma non sapevo che cappero di titolo dare a questo post^^
    si son divertiti a smanettare con il mio box commenti e son riusciti ad infilarci un allert ^_^' scusate mi spiego meglio, grazie al vostro staf sono riuscita a realizzare un sistema molto carino per i commenti nel sito,
    http://www.iltelaiodipenelope.it/pub...telaio_mex.php
    oggi ho trovato un paio di saluti "curiosi" ed infatti quando ho controllato erano state inserite url e mail fasulle e non so come diavolo abbiano fatto hanno inserito uno script che fa' uscire un allert quando apro la pagina per editare (correggere) i messaggi lasciati, nel box url è stato inserito questo tag:
    Codice HTML:
    http://<script>alert("xss-test");</script>
    e appunto nella pagina x correggere mi usciva fuori questo
    http://i376.photobucket.com/albums/o...img-allert.jpg
    Voi mi sapete spiegare cosa è e nel caso come contrastare prove script future?
    Grazie a tutti
    Ultima modifica di darkwolf : 16-06-2010 alle ore 00.57.35

  2. #2
    L'avatar di foreach
    foreach non è connesso Altervistiano Junior
    Data registrazione
    11-06-2008
    Residenza
    3 metri sotto terra
    Messaggi
    501

    Predefinito

    Ma nelle impostazioni del box commenti hai attivato il codice HTML nei commenti? Se è attivato, disattivalo.






    foreach
    Codice PHP:
    foreach($vettore as $chiave => $valore) {
    echo 
    "Ciao";


  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Puoi utilizzare le funzioni htmlspecialchars() o strip_tags().

    Io consiglio strip_tags() in modo da eliminare completamente ogni forma di codice HTML* o PHP.

    * E' possibile decidere quali tag HTML far utilizzare, quindi quali lasciare.
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Data registrazione
    11-07-2009
    Residenza
    Roma
    Messaggi
    163

    Predefinito

    Grazie miki ora faccio una ricerca.... non è che sono tanto pratica con queste cose sai^^

    Allora ho capito cosa è strip_tags ma, scusate la domanda che x voi sarà sicuramente scema, devo inserirlo nella pagina dove c'è il codice x l'inserimento del commento nel db o nella pagina che stampa?
    Ultima modifica di penelopesito : 16-06-2010 alle ore 00.00.11

  5. #5
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Tecnicamente, spero di non dire una boiata, non fa molta differenza :)
    Se lo metti nella pagina dove viene inserito verrà inserito già filtrato (e quindi così mostrato); se lo metti nella pagina che lo stampa verrà inserito interamente ma stampato in modo che sia inefficace) :)
    Insomma, due modi diversi per mettersi comunque al sicuro (correggetemi se sbaglio).

  6. #6
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    No darkwolf non sbagli, però a mio parere per mantenere una sicurezza un po' più elevata e per ridurre anche spazio nel database (che sia MySQL o altro) è meglio inserire quella funzione nello script che memorizza i messaggi.

    Questo però è un mio parere, perchè penso che avendo un codice (semmai PHP) pericoloso nel database potrebbe causare danni all'intero spazio se qualcuno trova qualche bug particolare e lo sfrutta per far agire quel codice...ma ripeto questo è ciò che penso io.
    Apprezzi l'aiuto? Offrimi un caffè!

  7. #7
    Guest

    Predefinito

    ti conviene inserirlo nella pagina di stampa, così anche quelli già registrati sranno disattivati e anche in quella di memeorizzazione dei dati

  8. #8
    Data registrazione
    11-07-2009
    Residenza
    Roma
    Messaggi
    163

    Predefinito

    Buon giorno a tutti^^
    scusami darkwolf ma non mi è molto chiaro ciò che hai scritto.... sono un'impedita e traffico da poco con il php

    Controllando bene il codice mi son resa conto che lo script allert non è stato inserito nel box dove si può digitare un commento tanto più che Euro mi ha scritto un filtro che non permette l'uso di determinati tag, ma è stato scritto nel l'imput dove andrebbe scritto url sito, li c'è un controllo javascript x il controllo appunto degli url
    Codice HTML:
    var isUrl_reg_exp = /(http):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;//solo http
    
    if (www != "") {
    if (!isUrl_reg_exp.test(www))  {
                alert ("Inserire url in modo corretto.\n Assicurati di aver scritto anche http://\n o lascia il campo vuoto.");
                document.insert.www.focus();
                return false;
        }
    }
    e un secondo controllo viene fatto sempre dal filtro nell'insert.
    Quindi non so ora il fatto di disabilitare html a quanto possa servire.......
    Ultima modifica di penelopesito : 16-06-2010 alle ore 08.39.11

  9. #9
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Citazione Originalmente inviato da penelopesito Visualizza messaggio
    Buon giorno a tutti^^
    scusami darkwolf ma non mi è molto chiaro ciò che hai scritto.... sono un'impedita e traffico da poco con il php
    Darkwolf voleva dire che:

    • Se inserisci la funzione nello script di memorizzazione: salverai il messaggio "puro" senza codici pericolosi.
    • Se inserisci la funzione nello script di visualizzazione messaggi: salverai il codice così come lo inviano ma quando andrai a visualizzare i messaggi li visualizzerai senza quei codici pericolosi nonostante essi si trovino nel database.


    Non ha detto nulla di difficile
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Questo però è un mio parere, perchè penso che avendo un codice (semmai PHP) pericoloso nel database potrebbe causare danni all'intero spazio se qualcuno trova qualche bug particolare e lo sfrutta per far agire quel codice...ma ripeto questo è ciò che penso io.
    Se si inserisce del php all'interno del messaggio, sarà del tutto innocuo.
    Prova a stampare:
    Codice PHP:
    echo '<?php unlink("file.php"); ?>';
    Non verrà mai eseguito dal server.

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da penelopesito Visualizza messaggio
    Buon giorno a tutti^^
    scusami darkwolf ma non mi è molto chiaro ciò che hai scritto.... sono un'impedita e traffico da poco con il php

    Controllando bene il codice mi son resa conto che lo script allert non è stato inserito nel box dove si può digitare un commento tanto più che Euro mi ha scritto un filtro che non permette l'uso di determinati tag, ma è stato scritto nel l'imput dove andrebbe scritto url sito, li c'è un controllo javascript x il controllo appunto degli url
    Codice HTML:
    var isUrl_reg_exp = /(http):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;//solo http
    
    if (www != "") {
    if (!isUrl_reg_exp.test(www))  {
                alert ("Inserire url in modo corretto.\n Assicurati di aver scritto anche http://\n o lascia il campo vuoto.");
                document.insert.www.focus();
                return false;
        }
    }
    e un secondo controllo viene fatto sempre dal filtro nell'insert.
    Quindi non so ora il fatto di disabilitare html a quanto possa servire.......
    Non proprio, quel comando serve solo a verificare se c'è scritto "http://" infatti basta scrivere
    "http://alert("Messaggio");
    che l'alert parte lo stesso

  12. #12
    Data registrazione
    11-07-2009
    Residenza
    Roma
    Messaggi
    163

    Predefinito

    Hai ragione worldpixel, il controllo dei tag particolari viene effettuato nella pagina insert,
    Codice:
    *************
    function isValidURI( $sURI ){ 
    
    //l'er valido è questo: 
    $er = "/^((http):\/\/|[w]{3}[0-9]{0,1}\.)([a-zA-Z0-9]([a-zA-Z0-9\-_]+\.|[a-zA-Z0-9\-_]+|)+[a-zA-Z0-9]\.[a-zA-Z]{2,6})(:[0-9]{1,5}|)(\/.{0,1024}|)$/i";  
    
    //$er = "~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~"; 
    
        return (bool) preg_match($er, $sURI); 
    }  
    **********
    if (isset($HTTP_POST_VARS[www])) 
    { 
    $www_id = $HTTP_POST_VARS[www];
    $void_www += substr_count($www_id,"<");
    $void_www += substr_count($www_id,">"); 
    $void_www += substr_count($www_id,".gif"); 
    $void_www += substr_count($www_id,".jpg"); 
    $void_www += substr_count($www_id,".png"); 
    $void_www += substr_count($www_id,".jpeg"); 
    $void_www += substr_count($www_id,".bmp"); 
    $void_www += substr_count($www_id,".tiff"); 
    $void_www += substr_count($www_id,".tga"); 
    $void_www += substr_count($www_id,".miff"); 
    $void_www += substr_count($www_id,".xcf"); 
    //filtro standard : 
    $void_www += substr_count($www_id,"ftp"); 
    $void_www += substr_count($www_id,"@"); 
    $void_www += substr_count($www_id,"/*"); 
    $void_www += substr_count($www_id,"./"); 
    $void_www += substr_count($www_id,"../");
    } 
    *********
    ma son riusciti lo stesso a postare i tag < e >......

    PS grazie x la spiegazione miki non volevo offendere nessuno ma per me non era affatto chiaro^^
    Ultima modifica di penelopesito : 16-06-2010 alle ore 10.32.16

  13. #13
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Figurati io ti ho solo spiegato (forse) in parole più semplici ciò che ha detto darkwolf, qui nessuna insulta nessuno

    Citazione Originalmente inviato da javascripter
    Se si inserisce del php all'interno del messaggio, sarà del tutto innocuo.
    Prova a stampare:
    Codice PHP:
    echo '<?php unlink("file.php"); ?>';
    Non verrà mai eseguito dal server.
    Ma se io invio come messaggio:

    Codice PHP:
    '.unlink("file.php").'

    // Oppure

    ".unlink("file.php")."
    Cosa accadrebbe?

    Codice PHP:
    echo ''.unlink("file.php").'';
    Utilizzare htmlspecialchars() o strip_tags() secondo me non fa mai male, anche se sei sicuro dei tuoi stessi script.
    Apprezzi l'aiuto? Offrimi un caffè!

  14. #14
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Figurati io ti ho solo spiegato (forse) in parole più semplici ciò che ha detto darkwolf, qui nessuna insulta nessuno


    Ma se io invio come messaggio:

    Codice PHP:
    '.unlink("file.php").'

    // Oppure

    ".unlink("file.php")."
    Cosa accadrebbe?

    Codice PHP:
    echo ''.unlink("file.php").'';
    Niente :), dato che il server non esegue il codice php dopo l'output. Se con l'esempio di sopra intendi un injection, basta usa mysql_real_escape_string o addslashes
    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Utilizzare htmlspecialchars() o strip_tags() secondo me non fa mai male, anche se sei sicuro dei tuoi stessi script.
    Di solito non converto mai in entità html, ma i tag li rimuovo sempre quando non servono.
    Ultima modifica di javascripter : 16-06-2010 alle ore 12.59.20

  15. #15
    Data registrazione
    11-07-2009
    Residenza
    Roma
    Messaggi
    163

    Predefinito

    Ragazzi scusate ma come faccio a rimuovere tag html quando il campo che è stato "minato" serve a scrivere un url? Sicuramente integrerò il codice con lo strip_tags() nella textarea dove vanno i commenti ma come faccio ad evitare gli script messi come url?

    ^_^ Miki ci mancherebbe che ci mettessimo ad insultarci.... io ho parlato di offendere, e volevo solo spiegare che purtroppo ciò che per voi è scontato x me è ancora mistero, ho capito perfettamente la tua spiegazione ma mi ero persa con quella di wolf, ma perchè sono io che ho difficoltà a comprendere e non perchè lui non sia capace a scrivere
    Ultima modifica di penelopesito : 16-06-2010 alle ore 18.18.31

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •