Php e modsecurity

di il
1 risposte

Php e modsecurity

Ciao a tutti, mi sto inoltrando nel mondo php.
Come ogni novizio sto riscontrando dei problemi nel creare alcune mie applicazioni, la maggior parte le risolvo con le ricerche su internet ma a queste due non riesco a trovare una soluzione, quindi mi rivolgo qui per cercare un'aiuto. Veniamo al dunque:

Il server mi restituisce un'errore del genere:
PHP Parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/www/html/edit.php on line 13,
la porzione di codice in questione è:
10. if($_GET['id'])
11.    header("Location: index.php");
12. // get id value
13. $sql = "select * from elenco_mat WHERE id = $_GET['id']";
14. $query = mysql_query($sql) or die("Query non valida: " . mysql_error());
se poi trasformo in questo modo:
10. $id = $_GET['id'];
11. $sql = "select * from elenco_mat WHERE id = $id";
12. $query = mysql_query($sql) or die("Query non valida: " . mysql_error());
sembrerebbe funzionare, ma a questo punto mi restituisce un'altro errore:
ModSecurity: Access denied with code 500 (phase 4). Pattern match "(?:\\b(?:(?:s(?:elect list because it is not contained in (?:an aggregate function and there is no|either an aggregate function or the) GROUP BY clause|upplied argument is not a valid (?:(?:M(?:S |y)|Postgre)SQL|O(?:racle|DBC)))|S(?:yntax error converti ..." at RESPONSE_BODY. [file "/etc/httpd/modsecurity.d/modsecurity_crs_50_outbound.conf"] [line "23"] [id "970003"] [msg "SQL Information Leakage"] [severity "WARNING"] [tag "LEAKAGE/ERRORS"] [hostname "localhost"] [uri "/edit.php"] [unique_id "UJD6nKwRCIQAAGrKErQAAAAD"]

e questo si riferisce a quando vado a fare l'update :
if ($_POST['submit'])
      {
          $link=mysql_connect("$databaseHostName","$databaseUserName","$databaseUserPassword")       or die ("Non riesco a connettermi a $databaseHostName");
      mysql_select_db ($databaseName, $link) or die ("Non riesco a selezionare il db $databaseName<br>");          

                     
//trasformiamo in variabili i post
  
   $coord=$_POST['mod_coord'];
   $pos=$_POST['mod_pos'];
   $pers=$_POST['mod_pers'];
   $matricola=$_POST['mod_matricola'];
   $matricola=strtoupper($matricola);
   $unit=$_POST['mod_unit'];
   $unit=strtoupper($unit);
   $qnt=$_POST['mod_qnt'];
   $prezzo=$_POST['mod_prezzo'];
   $data=$_POST['mod_data']; 
     
     
//aggiornamento dai database
$dati=" UPDATE seriale SET id_coord = '$coord',
                           id_pos = '$pos',
                           id_pers = '$pers',
                           matricola = '$matricola',
                           unit = '$unit',
                           qnt = '$qnt',
                           prezzo = '$prezzo',
                           data = '$data'
                           where id =  '$_GET['id']'";
                       
mysql_query ($dati, $link)
        or die ("Non riesco ad eseguire la query $dati");
                Echo "I Dati sono stati archiviati con successo nel DataBase $database";
                if($risultato)
{echo "<script type=text/javascript>alert('inserimento dati nel database riuscito');</script>";}
else {echo "<script type=text/javascript>alert('inserimento dati nel database fallito, riprova');</script>";} 
} mysql_close($link);
//redirect back to the view page
echo "<br><a href='index.php'>Home</a>";
?>

potete aiutarmi?

Grazie!

1 Risposte

  • Re: Php e modsecurity

    Ciao zebmckey,

    credo l'errore ci sia qui:
    $dati=" UPDATE seriale SET id_coord = '$coord',
                               id_pos = '$pos',
                               id_pers = '$pers',
                               matricola = '$matricola',
                               unit = '$unit',
                               qnt = '$qnt',
                               prezzo = '$prezzo',
                               data = '$data'
                               where id =  '$_GET['id']'";
    L'ultima riga credo sia scritta in modo non corretto, dato che ci sono 4 virgolette (') consecutive. Quindi dovrebbe essere
    where id = '".$_GET['id']."'";
    Così si diferenziano le virgolette della clausula (where id='.....') di quelle del nome de la variabile GET ('id'). Ti consiglio di mettere le virgolette " ogni volta che vuoi aggiungere il valore di una variabile PHP

    Poi ci dirai

    Ciao!
Devi accedere o registrarti per scrivere nel forum
1 risposte