Visualizzazione risultati 1 fino 12 di 12

Discussione: espressioni regolari

  1. #1
    Guest

    Predefinito espressioni regolari

    Ciao dovrei intercettare quando uno scrive
    ad esempio
    Codice PHP:
    <script>
    alert("ciao");
    </script>
    o qualsiasi cosa che inizi per < e termini per >
    sono riuscito a fare questo
    Codice PHP:
    /^(a-zA-Z0-9)+(a-zA-Z0-9)+(a-zA-Z0-9)/

  2. #2
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    A cosa ti serve? Te lo chiedo perchè potrebbero esserci funzioni che ti risparmierebbero il lavoro, tipo strip_tags().

    Per l'espressione regolare, comunque, .* sta ad indicare qualsiasi cosa, tranne il newline.
    Puoi aggiungere \n ai caratteri riconosciuti attraverso il modificatore di criterio s:

    Codice PHP:
    preg_match('#<(.*)>#s', $stringa, $trovati)
    Ciao!
    Ultima modifica di programmazioned : 21-09-2009 alle ore 17.40.48

  3. #3
    Guest

    Predefinito

    questo e il codice che sto usando
    Codice PHP:
    <?php
    $controllo
    ="(\<(/?[^\>]+)\>)";
    foreach(
    $_GET as $key => $value){
    if(
    $_GET[$key] == $controllo){
    die(
    "Errore Via Get…");
    }}
    foreach(
    $_POST as $key => $value){
    if(
    $_POST[$key] == $controllo){
    die(
    "Errore Via Post…");
    }}
    echo
    "ciao";
    ?>
    dovrei controllare i valori sia via post e get in caso che si trova una cosa del
    genere
    Codice PHP:
    <script>
    alert("ciao");
    </script>
    dovrebbe stampare errore pero non funziona...

  4. #4
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Non ti funziona perchè non è in quel modo che si usano le espressioni regolari: preg_match().

    Codice PHP:
    if(preg_match($controllo, $_GET[$key])){
    Ciao!

    P.S: Invece di fare un foreach su $_GET e $_POST, potresti operare sulla stringa restituita da implode() ;)

  5. #5
    Guest

    Predefinito

    mi potresti postare come secondo te deve essere per vedere se qualcuno non sta cercando di fare un attacco via xss e SQL injection
    sia via post che get..^^

  6. #6
    Guest

    Predefinito

    ragazzi con ce più il tasto edit..
    sapete darmi una mano ho provato ma niente...

  7. #7
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da zappi Visualizza messaggio
    mi potresti postare come secondo te deve essere per vedere se qualcuno non sta cercando di fare un attacco via xss e SQL injection
    sia via post che get..^^
    Non è che ci sia una risposta, perché molto dipende da come stai strutturando il tuo script.

    La regola generale è: prima di stampare qualsiasi cosa ti venga dall'esterno (sulla quale non hai controllo), devi controllare i dati.

    Ti possono essere utili due funzioncine PHP:
    - htmlentities (traduce i tag HTML in modo da visualizzarli sullo schermo, senza che questi abbiano effetto)
    - mysql_real_escape_string (traduce le stringhe in modo che tu le possa usare in modo sicuro nella scrittura di una query)

    Naturalmente, per utilizzarle devi avvolgere i tuoi oggetti "sospetti" prima di utilizzarli per concatenarli al resto del codice HTML o della query che ti serve...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  8. #8
    Guest

    Predefinito

    no io vorrei solo fare se qualcuno....
    sta cercando di fare un attacco xss o sql injection...
    <?php
    $controllo="(\<(/?[^\>]+)\>)";
    foreach($_GET as $key => $value){
    if($_GET[$key] == $controllo){
    die("Errore Via Get…");
    }}
    foreach($_POST as $key => $value){
    if($_POST[$key] == $controllo){
    die("Errore Via Post…");
    }}
    echo "ciao";
    ?>
    stampi errore in base a quale e
    pensi sia possibile

  9. #9
    Guest

    Predefinito

    E' possibile, ma se fai finta di non aver capito quello scritto da programmazioned...
    Codice PHP:
    <?php
    $controllo
    ="/(\<(/?[^\>]+)\>)/i";
    foreach(
    $_GET as $key => $value){
    if(
    preg_match($controllo, $_GET[$key]){
    die(
    "Errore Via Get…");
    }}
    foreach(
    $_POST as $key => $value){
    if(
    preg_match($controllo, $_GET[$key]){
    die(
    "Errore Via Post…");
    }}
    echo
    "ciao";
    ?>
    Non ho provato comunque sia dovrebbe funzionare

    P.s. Che brutto errore correggo subito il codice, scusatemi
    Ultima modifica di nokiagames : 24-09-2009 alle ore 20.50.08

  10. #10
    Guest

    Predefinito

    non non avevo capito bene
    errore lo da lo stesso anche se metto
    isa.php?ssa

    invece io voglio che da errore solo se usa
    i caratteri
    < >
    tipo
    <script>

    <?php
    $controllo="/(\<(/?[^\>]+)\>)/i";
    foreach($_GET as $key => $value){
    if(!preg_match($controllo, $_GET[$key])){
    die("Errore Via Get…");
    }}
    foreach($_POST as $key => $value){
    if(!preg_match($controllo, $_POST[$key])){
    die("Errore Via Post…");
    }}
    echo "ciao";
    ?>

  11. #11
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Togli i ! davanti a preg_match.

    Ciao!

  12. #12
    Guest

    Predefinito

    ho provato ma non funziona...
    non mi da errore get ^^

Regole di scrittura

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