Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Pattern matching, come ignorare il case?!

    Ciao a tutti.

    Sto cercando di gestire la sicurezza del forum del mio sito.
    Avrei bisogno di un pattern matching che analizzi una stringa eliminando le espressioni che:
    - Sono comprese tra < e >
    - Contengono al loro interno la parola 'SCRIPT' (sia maiuscola che minusca che MISTA)

    Io avrei già elaborato un pattern matching così strutturato:


    // la stringa che arriva al metodo si chiama str...
    String s = str.replaceAll("<(\\s*)(script|SCRIPT)(.*)>", "_SCRIPT ANNULLATO_");


    Questo metodo ragiona in questo modo:
    - Cerco un <
    - Continuo a saltare spazi finché non trovo 'script' oppure 'SCRIPT'
    - Vado avanti (saltando qualsiasi cosa) finché trovo >
    - Sostituisco l'intera espressione con '__SCRIPT ANNULLATO__'



    Sembrava ottimale fino a quando mi hanno fatto notare che la seguente stringa può essere inserita nel mio forum:

    <sCRipt>alert('messaggio volgare')</sCRiPt>

    Che apre una finestra popup fastidiosa

    Come posso modificare il mio pattern matching per riuscire a trovare la parola 'script' sia maiuscola che minuscola (che mista)?!

    Spero di sentirvi presto
    Il cinghiale è un animale raffinato

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Pattern matching, come ignorare il case?!

    Originariamente inviato da SimoVinci
    Come posso modificare il mio pattern matching per riuscire a trovare la parola 'script' sia maiuscola che minuscola (che mista)?!
    codice:
    Pattern pattern = Pattern.compile ("...espressione_regolare...", Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher (strInput);
    
    String strOutput = matcher.replaceAll ("...sostituzione...");
    Ovviamente nella regex non c'è più bisogno di fare delle OR del tipo script|SCRIPT.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    GRANDIOSO!!

    Ho risolto, grazie mille!
    Il cinghiale è un animale raffinato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.