Visualizzazione risultati 1 fino 3 di 3

Discussione: Prompt ( JS ) concatenato a MYSQL ( PHP )

  1. #1
    Guest

    Post Prompt ( JS ) concatenato a MYSQL ( PHP )

    Salve,
    avrei un problema per utilizzare il metodo prompt() di javascript come valore per una query SQL ed in fine inviare questa appunto al database. Lo script si occupa di rinominare l'account selezionato. Il codice PHP è il seguente:

    Codice:
    if(isset($_POST["send-sqlmod"])) {
    	function prompt($prompt_msg){
    		echo("<script type='text/javascript'> a = prompt('".$prompt_msg."'); </script>");
    		return "<script>document.write(a)</script>";
    	}
    	$name = prompt("Inserisci il nuovo username:");
    	$sql = $_POST["sql_querymod"];
    	$sql_long = "'UPDATE `my_bookmode`.`users` SET `username` = '".$name."' WHERE `users`.`id` =".$sql." LIMIT 1 ;'";
    	mysql_query($sql_long) or die();
    }
    Purtroppo però la query inviata risulta errata in quanto se controllo il nuovo username da phpmyadmin, esso risulta in questo modo: document.write(a)

    Come posso risolvere?

    Inoltre, avrei un secondo piccolo problema, come potrei alertare l'operazione inviata?
    Ho provato con:
    Codice:
    echo '<script>alert('.$sql_long.')</script>';
    Pare non funzionare per un problema di apici, qualche soluzione?

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Non confondere i due linguaggi: lo script PHP finisce una volta che ha generato il documento HTML e questo viene inviato al browser del client, dopodiché quest'ultimo può eseguire lo script JavaScript. Per comunicare ad uno script PHP sul server, lo script JavaScript può fare uso dell'oggetto XMLHttpRequest ad esempio, ma anche compilare ed inviare un modulo (form). Lo script PHP che riceve i dati non può quindi essere il medesimo che fornisce al browser il documento che chiede all'utente di inserire i dati.
    Infine, scritto così lo script PHP è vulnerabile ad iniezioni di codice SQL, un utente malintenzionato può modificare la query per eseguire istruzioni dannose, come per esempio la cancellazione completa di una tabella, per proteggerti da simili attacchi fai una piccola ricerca (scrivi SQL injection).
    Ultima modifica di karl94 : 02-12-2013 alle ore 02.40.21

  3. #3
    Guest

    Predefinito

    Il frammento di codice fa parte di un pannello amministrazione con protezioni di accesso, qui non ho ristretto le query al db. Il resto del sito è protetto da sql injection. Ne ero gia a conoscenza.

    La mia domanda è come si puó correggere lo script sopra :-)

Regole di scrittura

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