Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    5

    dubbio sulla sicurezza dello script

    ciao a tutti, premetto che sono un neofita di php pertanto chiedo a voi.
    Ho realizzato un programma con autohotkey che si connette via https al mio database mysql tramite questo script php:

    Codice PHP:
    <?php 
    //////////////////////////////////////////////////////// 

    // required security key to run this script 
    $sec_key "xxxxxxxxxxxxxxxxxxxxx"

    // database login 
    $host="localhost";           // Host name "localhost" 
    $username="xxxxxxxxxxxx";         // Mysql username  
    $password="";       // Mysql password  
    $db_name="xxxxxxxxxxx";             // Database name  

    //////////////////////////////////////////////////////// 

    // start logfile 
    logfile("-----------------------------------------------------"); 

    // compare security key 
    if($_GET['key'] != $sec_key){ 
        
    logfile("security key doesn't match! Aborting ..."); 
        die(
    "AHKERROR:100"); 
    } else { 
        
    logfile("security key matches"); 


    // read SQL command from URL 
    $query $_GET['query']; 

    // error when sql command too short 
    if (strlen($query) < 5) { 
        
    logfile("error: no sql command found! (query < 5 chars) Aborting ..."); 
        die(
    "AHKERROR:200"); 

    else 
    logfile("received SQL command from URL"); 

    // URL decoding 
    // changing the "¡" and the "±" to an "!" and "+-" here 
    $url_decoder = array("%20"=>" ","%21"=>"!","%22"=>'"',"%23"=>"#","%24"=>"$","%25"=>"%","%26"=>"&","%27"=>"'","%28"=>"(","%29"=>")"
    "%2A"=>"*","%2B"=>"+","%2C"=>",","%2D"=>"-","%2E"=>".","%2F"=>"/","%30"=>"0","%31"=>"1","%32"=>"2","%33"=>"3","%34"=>"4","%35"=>"5"
    "%36"=>"6","%37"=>"7","%38"=>"8","%39"=>"9","%3A"=>":","%3B"=>";","%3C"=>"<","%3D"=>"=","%3E"=>">","%3F"=>"?","%40"=>"@","%41"=>"A"
    "%42"=>"B","%43"=>"C","%44"=>"D","%45"=>"E","%46"=>"F","%47"=>"G","%48"=>"H","%49"=>"I","%4A"=>"J","%4B"=>"K","%4C"=>"L","%4D"=>"M"
    "%4E"=>"N","%4F"=>"O","%50"=>"P","%51"=>"Q","%52"=>"R","%53"=>"S","%54"=>"T","%55"=>"U","%56"=>"V","%57"=>"W","%58"=>"X","%59"=>"Y"
    "%5A"=>"Z","%5B"=>"[","%5C"=>"\\","%5D"=>"]","%5E"=>"^","%5F"=>"_","%60"=>"`","%61"=>"a","%62"=>"b","%63"=>"c","%64"=>"d","%65"=>"e"
    "%66"=>"f","%67"=>"g","%68"=>"h","%69"=>"i","%6A"=>"j","%6B"=>"k","%6C"=>"l","%6D"=>"m","%6E"=>"n","%6F"=>"o","%70"=>"p","%71"=>"q"
    "%72"=>"r","%73"=>"s","%74"=>"t","%75"=>"u","%76"=>"v","%77"=>"w","%78"=>"x","%79"=>"y","%7A"=>"z","%7B"=>"{","%7C"=>"|","%7D"=>"}"
    "%7E"=>"~","%80"=>"€","%82"=>"‚","%83"=>"ƒ","%84"=>"„","%85"=>"…","%86"=>"†","%87"=>"‡","%88"=>"ˆ","%89"=>"‰","%8A"=>"Š","%8B"=>"‹"
    "%8C"=>"Œ","%8E"=>"Ž","%91"=>"‘","%92"=>"’","%93"=>"“","%94"=>"”","%95"=>"•","%96"=>"–","%97"=>"—","%98"=>"˜","%99"=>"™","%9A"=>"š"
    "%9B"=>"›","%9C"=>"œ","%9E"=>"ž","%9F"=>"Ÿ","%A1"=>"!","%A2"=>"¢","%A3"=>"£","%A5"=>"¥","%A6"=>"|","%A7"=>"§","%A8"=>"¨","%A9"=>"©"
    "%AA"=>"ª","%AB"=>"«","%AC"=>"¬","%AD"=>"¯","%AE"=>"®","%AF"=>"¯","%B0"=>"°","%B1"=>"+-","%B2"=>"²","%B3"=>"³","%B4"=>"´","%B5"=>"µ"
    "%B6"=>"¶","%B7"=>"·","%B8"=>"¸","%B9"=>"¹","%BA"=>"º","%BB"=>"»","%BC"=>"¼","%BD"=>"½","%BE"=>"¾","%BF"=>"¿","%C0"=>"À","%C1"=>"Á"
    "%C2"=>"Â","%C3"=>"Ã","%C4"=>"Ä","%C5"=>"Å","%C6"=>"Æ","%C7"=>"Ç","%C8"=>"È","%C9"=>"É","%CA"=>"Ê","%CB"=>"Ë","%CC"=>"Ì","%CD"=>"Í"
    "%CE"=>"Î","%CF"=>"Ï","%D0"=>"Ð","%D1"=>"Ñ","%D2"=>"Ò","%D3"=>"Ó","%D4"=>"Ô","%D5"=>"Õ","%D6"=>"Ö","%D8"=>"Ø","%D9"=>"Ù","%DA"=>"Ú"
    "%DB"=>"Û","%DC"=>"Ü","%DD"=>"Ý","%DE"=>"Þ","%DF"=>"ß","%E0"=>"à","%E1"=>"á","%E2"=>"â","%E3"=>"ã","%E4"=>"ä","%E5"=>"å","%E6"=>"æ"
    "%E7"=>"ç","%E8"=>"è","%E9"=>"é","%EA"=>"ê","%EB"=>"ë","%EC"=>"ì","%ED"=>"í","%EE"=>"î","%EF"=>"ï","%F0"=>"ð","%F1"=>"ñ","%F2"=>"ò"
    "%F3"=>"ó","%F4"=>"ô","%F5"=>"õ","%F6"=>"ö","%F7"=>"÷","%F8"=>"ø","%F9"=>"ù","%FA"=>"ú","%FB"=>"û","%FC"=>"ü","%FD"=>"ý","%FE"=>"þ"
    "%FF"=>"ÿ","\\"=>""); 
    $query strtr($query$url_decoder); 

    // connect to database 
    mysql_select_db($db_namemysql_connect($host$username$password)); 

    // in case the query is an SELECT command, prepare for return the value 
    if(stripos($query,"SELECT") !== false$select true
    else 
    $select false

    // case query failed 
    if (!$sql_return mysql_query($query)) { 
        
    $mysql_error_short str_replace("You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use","Syntax error",mysql_error());         // prevents unnecessarily long text to be written to the logfile 
        
    logfile('failed command: '.$query.'. SQL feedback: ' $mysql_error_short); 
        die(
    "AHKERROR:300:" $mysql_error_short); 


    // case query succeeded 
        
    if ($select == true) { 
            while (
    $sql_return_arr mysql_fetch_row($sql_return)) { 
                
    $sql_return_arr str_replace("¡","!",$sql_return_arr);            // escaping the separator signs here is necessary 
                
    $sql_return_arr str_replace("±","+-",$sql_return_arr); 
                
    $cols[$i++] = implode("¡",$sql_return_arr); 
            } 
            echo 
    implode("±",$cols); 
        } 
        else echo 
    "AHKSUCCESS"

    // log an success message 
        
    logfile("SQL command was executed and outputted successfully."); 


    // write loggings to a logfile.txt in the same folder 
    function logfile($string) { 
        
    $today date("m.d.y H:i:s"); 
        
    $string $today.": ".$string."\n"
        
    $handler fOpen("logfile.txt" "a+"); 
        
    fWrite($handler $string); 
        
    fClose($handler); 


    ///// Dietmar Sach, 29.12.2010 
    ?>

    Poichè in futuro vorrei distribuire il programma, vorrei sapere a quali rischi mi espone un sistema del genere... gli eventuali rischi riguardano solo la sicurezza del database o anche la sicurezza di chi si connette?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Non l'ho guardato tutto, ma la prima cosa che posso dirti è di non usare funzioni deprecate (mysql_*).Informati sulle mysqli*
    No

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Certo che c'è un problema di sicurezza per il db ed anche grave!
    Prendi la query dalla url e non la verifichi, sapendo il nome del db lì uno potrebbe scriverci "DROP nome_db" e ti elimina il database!!!
    Pur non sapendo il nome del db potrebbero comunque farti altri danni.

    La query la devi generare tu dinamicamente, dall'url devi farti arrivare solo i parametri, per esempio parametri che comporranno la clausola WHERE, oppure i valori per una INSERT o UPDATE e via dicendo, ma non la query completa.
    Ad ogni modo, anche generando tu la query, dovrai comunque assicurarti che ciò che viene passato come parametro non sia pericoloso, per questo andrebbe usata la funzione myslqi_real_escape_string().

    N.B.: ti ho scritto mysqli_ perché come giustamente detto da tampertools le funzioni myslq_ sono deprecate, se poi usi PDO ancora meglio.
    Ultima modifica di Alhazred; 28-11-2014 a 13:02

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    // read SQL command from URL
    $query = $_GET['query'];


    // ... ... ...


    // URL decoding
    // changing the "¡" and the "±" to an "!" and "+-" here
    $url_decoder = array("%20"=>" ","%21"=>"!","%22"=>'"',"%23"=>"#","%24"=>"$","%25 "=>"%","%26"=>"&","%27"=>"'","%28"=>"(","%29"=>")" ,
    "%2A"=>"*","%2B"=>"+","%2C"=>",","%2D"=>"-","%2E"=>".","%2F"=>"/","%30"=>"0","%31"=>"1","%32"=>"2","%33"=>"3","%34 "=>"4","%35"=>"5",
    "%36"=>"6","%37"=>"7","%38"=>"8","%39"=>"9","%3A"= >":","%3B"=>";","%3C"=>"<","%3D"=>"=","%3E"=>">"," %3F"=>"?","%40"=>"@","%41"=>"A",
    "%42"=>"B","%43"=>"C","%44"=>"D","%45"=>"E","%46"= >"F","%47"=>"G","%48"=>"H","%49"=>"I","%4A"=>"J"," %4B"=>"K","%4C"=>"L","%4D"=>"M",
    "%4E"=>"N","%4F"=>"O","%50"=>"P","%51"=>"Q","%52"= >"R","%53"=>"S","%54"=>"T","%55"=>"U","%56"=>"V"," %57"=>"W","%58"=>"X","%59"=>"Y",
    "%5A"=>"Z","%5B"=>"[","%5C"=>"\\","%5D"=>"]","%5E"=>"^","%5F"=>"_","%60"=>"`","%61"=>"a","%62 "=>"b","%63"=>"c","%64"=>"d","%65"=>"e",
    "%66"=>"f","%67"=>"g","%68"=>"h","%69"=>"i","%6A"= >"j","%6B"=>"k","%6C"=>"l","%6D"=>"m","%6E"=>"n"," %6F"=>"o","%70"=>"p","%71"=>"q",
    "%72"=>"r","%73"=>"s","%74"=>"t","%75"=>"u","%76"= >"v","%77"=>"w","%78"=>"x","%79"=>"y","%7A"=>"z"," %7B"=>"{","%7C"=>"|","%7D"=>"}",
    "%7E"=>"~","%80"=>"€","%82"=>"‚","%83"=>"ƒ","%84"= >"„","%85"=>"…","%86"=>"†","%87"=>"‡","%88"=>"ˆ"," %89"=>"‰","%8A"=>"Š","%8B"=>"‹",
    "%8C"=>"Œ","%8E"=>"Ž","%91"=>"‘","%92"=>"’","%93"= >"“","%94"=>"”","%95"=>"•","%96"=>"–","%97"=>"—"," %98"=>"˜","%99"=>"™","%9A"=>"š",
    "%9B"=>"›","%9C"=>"œ","%9E"=>"ž","%9F"=>"Ÿ","%A1"= >"!","%A2"=>"¢","%A3"=>"£","%A5"=>"¥","%A6"=>"|"," %A7"=>"§","%A8"=>"¨","%A9"=>"©",
    "%AA"=>"ª","%AB"=>"«","%AC"=>"¬","%AD"=>"¯","%AE"= >"®","%AF"=>"¯","%B0"=>"°","%B1"=>"+-","%B2"=>"²","%B3"=>"³","%B4"=>"´","%B5"=>"µ",
    "%B6"=>"¶","%B7"=>"·","%B8"=>"¸","%B9"=>"¹","%BA"= >"º","%BB"=>"»","%BC"=>"¼","%BD"=>"½","%BE"=>"¾"," %BF"=>"¿","%C0"=>"À","%C1"=>"Á",
    "%C2"=>"Â","%C3"=>"Ã","%C4"=>"Ä","%C5"=>"Å","%C6"= >"Æ","%C7"=>"Ç","%C8"=>"È","%C9"=>"É","%CA"=>"Ê"," %CB"=>"Ë","%CC"=>"Ì","%CD"=>"Í",
    "%CE"=>"Î","%CF"=>"Ï","%D0"=>"Ð","%D1"=>"Ñ","%D2"= >"Ò","%D3"=>"Ó","%D4"=>"Ô","%D5"=>"Õ","%D6"=>"Ö"," %D8"=>"Ø","%D9"=>"Ù","%DA"=>"Ú",
    "%DB"=>"Û","%DC"=>"Ü","%DD"=>"Ý","%DE"=>"Þ","%DF"= >"ß","%E0"=>"à","%E1"=>"á","%E2"=>"â","%E3"=>"ã"," %E4"=>"ä","%E5"=>"å","%E6"=>"æ",
    "%E7"=>"ç","%E8"=>"è","%E9"=>"é","%EA"=>"ê","%EB"= >"ë","%EC"=>"ì","%ED"=>"í","%EE"=>"î","%EF"=>"ï"," %F0"=>"ð","%F1"=>"ñ","%F2"=>"ò",
    "%F3"=>"ó","%F4"=>"ô","%F5"=>"õ","%F6"=>"ö","%F7"= >"÷","%F8"=>"ø","%F9"=>"ù","%FA"=>"ú","%FB"=>"û"," %FC"=>"ü","%FD"=>"ý","%FE"=>"þ",
    "%FF"=>"ÿ","\\"=>"");
    $query = strtr($query, $url_decoder);

    http://php.net/manual/it/function.urldecode.php
    I parametri $_GET e $_POST sono già decodificati...
    No

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    // read SQL command from URL
    $query = $_GET['query'];


    // ... ... ...


    // URL decoding
    // changing the "¡" and the "±" to an "!" and "+-" here
    $url_decoder = array("%20"=>" ","%21"=>"!","%22"=>'"',"%23"=>"#","%24"=>"$","%25 "=>"%","%26"=>"&","%27"=>"'","%28"=>"(","%29"=>")" ,
    "%2A"=>"*","%2B"=>"+","%2C"=>",","%2D"=>"-","%2E"=>".","%2F"=>"/","%30"=>"0","%31"=>"1","%32"=>"2","%33"=>"3","%34 "=>"4","%35"=>"5",
    "%36"=>"6","%37"=>"7","%38"=>"8","%39"=>"9","%3A"= >":","%3B"=>";","%3C"=>"<","%3D"=>"=","%3E"=>">"," %3F"=>"?","%40"=>"@","%41"=>"A",
    "%42"=>"B","%43"=>"C","%44"=>"D","%45"=>"E","%46"= >"F","%47"=>"G","%48"=>"H","%49"=>"I","%4A"=>"J"," %4B"=>"K","%4C"=>"L","%4D"=>"M",
    "%4E"=>"N","%4F"=>"O","%50"=>"P","%51"=>"Q","%52"= >"R","%53"=>"S","%54"=>"T","%55"=>"U","%56"=>"V"," %57"=>"W","%58"=>"X","%59"=>"Y",
    "%5A"=>"Z","%5B"=>"[","%5C"=>"\\","%5D"=>"]","%5E"=>"^","%5F"=>"_","%60"=>"`","%61"=>"a","%62 "=>"b","%63"=>"c","%64"=>"d","%65"=>"e",
    "%66"=>"f","%67"=>"g","%68"=>"h","%69"=>"i","%6A"= >"j","%6B"=>"k","%6C"=>"l","%6D"=>"m","%6E"=>"n"," %6F"=>"o","%70"=>"p","%71"=>"q",
    "%72"=>"r","%73"=>"s","%74"=>"t","%75"=>"u","%76"= >"v","%77"=>"w","%78"=>"x","%79"=>"y","%7A"=>"z"," %7B"=>"{","%7C"=>"|","%7D"=>"}",
    "%7E"=>"~","%80"=>"€","%82"=>"‚","%83"=>"ƒ","%84"= >"„","%85"=>"…","%86"=>"†","%87"=>"‡","%88"=>"ˆ"," %89"=>"‰","%8A"=>"Š","%8B"=>"‹",
    "%8C"=>"Œ","%8E"=>"Ž","%91"=>"‘","%92"=>"’","%93"= >"“","%94"=>"”","%95"=>"•","%96"=>"–","%97"=>"—"," %98"=>"˜","%99"=>"™","%9A"=>"š",
    "%9B"=>"›","%9C"=>"œ","%9E"=>"ž","%9F"=>"Ÿ","%A1"= >"!","%A2"=>"¢","%A3"=>"£","%A5"=>"¥","%A6"=>"|"," %A7"=>"§","%A8"=>"¨","%A9"=>"©",
    "%AA"=>"ª","%AB"=>"«","%AC"=>"¬","%AD"=>"¯","%AE"= >"®","%AF"=>"¯","%B0"=>"°","%B1"=>"+-","%B2"=>"²","%B3"=>"³","%B4"=>"´","%B5"=>"µ",
    "%B6"=>"¶","%B7"=>"·","%B8"=>"¸","%B9"=>"¹","%BA"= >"º","%BB"=>"»","%BC"=>"¼","%BD"=>"½","%BE"=>"¾"," %BF"=>"¿","%C0"=>"À","%C1"=>"Á",
    "%C2"=>"Â","%C3"=>"Ã","%C4"=>"Ä","%C5"=>"Å","%C6"= >"Æ","%C7"=>"Ç","%C8"=>"È","%C9"=>"É","%CA"=>"Ê"," %CB"=>"Ë","%CC"=>"Ì","%CD"=>"Í",
    "%CE"=>"Î","%CF"=>"Ï","%D0"=>"Ð","%D1"=>"Ñ","%D2"= >"Ò","%D3"=>"Ó","%D4"=>"Ô","%D5"=>"Õ","%D6"=>"Ö"," %D8"=>"Ø","%D9"=>"Ù","%DA"=>"Ú",
    "%DB"=>"Û","%DC"=>"Ü","%DD"=>"Ý","%DE"=>"Þ","%DF"= >"ß","%E0"=>"à","%E1"=>"á","%E2"=>"â","%E3"=>"ã"," %E4"=>"ä","%E5"=>"å","%E6"=>"æ",
    "%E7"=>"ç","%E8"=>"è","%E9"=>"é","%EA"=>"ê","%EB"= >"ë","%EC"=>"ì","%ED"=>"í","%EE"=>"î","%EF"=>"ï"," %F0"=>"ð","%F1"=>"ñ","%F2"=>"ò",
    "%F3"=>"ó","%F4"=>"ô","%F5"=>"õ","%F6"=>"ö","%F7"= >"÷","%F8"=>"ø","%F9"=>"ù","%FA"=>"ú","%FB"=>"û"," %FC"=>"ü","%FD"=>"ý","%FE"=>"þ",
    "%FF"=>"ÿ","\\"=>"");
    $query = strtr($query, $url_decoder);

    http://php.net/manual/it/function.urldecode.php
    I parametri $_GET e $_POST sono già decodificati...
    No

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    5
    Lo script php non è opera mia , non so quale funzione abbia $url_decoder.

    Per quando riguarda la query dalla url, secondo voi, potrei risolvere il problema facendo in modo che la query venga ottenuta in base a delle parole chiave presenti nell'url?

    ad esempio, via url potrei far arrivare una cosa del tipo: "pippo parametro1, parametro2..."
    e lo script dovrebbe ottenere la query in base alla parola chiave "pippo":

    if strpos url "pippo" => insert ...
    else
    if strpos url "pluto" => where ...
    else
    exit

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    5
    Quote Originariamente inviata da ghilga Visualizza il messaggio
    Lo script php non è opera mia , non so quale funzione abbia $url_decoder.

    Per quando riguarda la query dalla url, secondo voi, potrei risolvere il problema facendo in modo che la query venga ottenuta in base a delle parole chiave presenti nell'url?

    ad esempio, via url potrei far arrivare una cosa del tipo: "pippo parametro1, parametro2..."
    e lo script dovrebbe ottenere la query in base alla parola chiave "pippo":

    if strpos url "pippo" => insert ...
    else
    if strpos url "pluto" => where ...
    else
    exit
    intendevo:
    if strpos url "pippo" => insert ...
    else
    if strpos url "pluto" => update ...
    else
    exit

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    5
    Ho sostituito i comandi mysql con msqli inoltre adesso la query non viene più passata direttamente dall'url ma è lo script a ricavarla in base a delle parole chiave presenti nell'url... che ne pensate?

    codice:
    <?php
    ///////////////versione mysqli/////////////////
    
    
    // required security key to run this script
    $sec_key = "xxx";
    
    
    // database login
    $host="xxx";           // Host name "localhost"
    $username="xxx";         // Mysql username 
    $password="";       // Mysql password 
    $db_name="xxx";             // Database name 
    
    
    ////////////////////////////////////////////////////////
    
    
    // start logfile
    logfile("-----------------------------------------------------");
    
    
    // compare security key
    if($_GET['key'] != $sec_key){
        logfile("security key doesn't match! Aborting ...");
        die("AHKERROR:100");
    } else {
        logfile("security key matches");
    }
    
    
    // read URL (che non è una query, nonostante il nome)
    $query = $_GET['query']; 
    
    
    // error when sql command too short
    if (strlen($query) < 5) {
        logfile("error: no sql command found! (query < 5 chars) Aborting ...");
        die("AHKERROR:200");
    }
    else logfile("received SQL command from URL");
    
    
    // URL decoding (questo non so a cosa serva...)
    // changing the "¡" and the "±" to an "!" and "+-" here
    $url_decoder = array("%20"=>" ","%21"=>"!","%22"=>'"',"%23"=>"#","%24"=>"$","%25"=>"%","%26"=>"&","%27"=>"'","%28"=>"(","%29"=>")",
    "%2A"=>"*","%2B"=>"+","%2C"=>",","%2D"=>"-","%2E"=>".","%2F"=>"/","%30"=>"0","%31"=>"1","%32"=>"2","%33"=>"3","%34"=>"4","%35"=>"5",
    "%36"=>"6","%37"=>"7","%38"=>"8","%39"=>"9","%3A"=>":","%3B"=>";","%3C"=>"<","%3D"=>"=","%3E"=>">","%3F"=>"?","%40"=>"@","%41"=>"A",
    "%42"=>"B","%43"=>"C","%44"=>"D","%45"=>"E","%46"=>"F","%47"=>"G","%48"=>"H","%49"=>"I","%4A"=>"J","%4B"=>"K","%4C"=>"L","%4D"=>"M",
    "%4E"=>"N","%4F"=>"O","%50"=>"P","%51"=>"Q","%52"=>"R","%53"=>"S","%54"=>"T","%55"=>"U","%56"=>"V","%57"=>"W","%58"=>"X","%59"=>"Y",
    "%5A"=>"Z","%5B"=>"[","%5C"=>"\\","%5D"=>"]","%5E"=>"^","%5F"=>"_","%60"=>"`","%61"=>"a","%62"=>"b","%63"=>"c","%64"=>"d","%65"=>"e",
    "%66"=>"f","%67"=>"g","%68"=>"h","%69"=>"i","%6A"=>"j","%6B"=>"k","%6C"=>"l","%6D"=>"m","%6E"=>"n","%6F"=>"o","%70"=>"p","%71"=>"q",
    "%72"=>"r","%73"=>"s","%74"=>"t","%75"=>"u","%76"=>"v","%77"=>"w","%78"=>"x","%79"=>"y","%7A"=>"z","%7B"=>"{","%7C"=>"|","%7D"=>"}",
    "%7E"=>"~","%80"=>"€","%82"=>"‚","%83"=>"ƒ","%84"=>"„","%85"=>"…","%86"=>"†","%87"=>"‡","%88"=>"ˆ","%89"=>"‰","%8A"=>"Š","%8B"=>"‹",
    "%8C"=>"Œ","%8E"=>"Ž","%91"=>"‘","%92"=>"’","%93"=>"“","%94"=>"”","%95"=>"•","%96"=>"–","%97"=>"—","%98"=>"˜","%99"=>"™","%9A"=>"š",
    "%9B"=>"›","%9C"=>"œ","%9E"=>"ž","%9F"=>"Ÿ","%A1"=>"!","%A2"=>"¢","%A3"=>"£","%A5"=>"¥","%A6"=>"|","%A7"=>"§","%A8"=>"¨","%A9"=>"©",
    "%AA"=>"ª","%AB"=>"«","%AC"=>"¬","%AD"=>"¯","%AE"=>"®","%AF"=>"¯","%B0"=>"°","%B1"=>"+-","%B2"=>"²","%B3"=>"³","%B4"=>"´","%B5"=>"µ",
    "%B6"=>"¶","%B7"=>"·","%B8"=>"¸","%B9"=>"¹","%BA"=>"º","%BB"=>"»","%BC"=>"¼","%BD"=>"½","%BE"=>"¾","%BF"=>"¿","%C0"=>"À","%C1"=>"Á",
    "%C2"=>"Â","%C3"=>"Ã","%C4"=>"Ä","%C5"=>"Å","%C6"=>"Æ","%C7"=>"Ç","%C8"=>"È","%C9"=>"É","%CA"=>"Ê","%CB"=>"Ë","%CC"=>"Ì","%CD"=>"Í",
    "%CE"=>"Î","%CF"=>"Ï","%D0"=>"Ð","%D1"=>"Ñ","%D2"=>"Ò","%D3"=>"Ó","%D4"=>"Ô","%D5"=>"Õ","%D6"=>"Ö","%D8"=>"Ø","%D9"=>"Ù","%DA"=>"Ú",
    "%DB"=>"Û","%DC"=>"Ü","%DD"=>"Ý","%DE"=>"Þ","%DF"=>"ß","%E0"=>"à","%E1"=>"á","%E2"=>"â","%E3"=>"ã","%E4"=>"ä","%E5"=>"å","%E6"=>"æ",
    "%E7"=>"ç","%E8"=>"è","%E9"=>"é","%EA"=>"ê","%EB"=>"ë","%EC"=>"ì","%ED"=>"í","%EE"=>"î","%EF"=>"ï","%F0"=>"ð","%F1"=>"ñ","%F2"=>"ò",
    "%F3"=>"ó","%F4"=>"ô","%F5"=>"õ","%F6"=>"ö","%F7"=>"÷","%F8"=>"ø","%F9"=>"ù","%FA"=>"ú","%FB"=>"û","%FC"=>"ü","%FD"=>"ý","%FE"=>"þ",
    "%FF"=>"ÿ","\\"=>"");
    
    
    $url = strtr($query, $url_decoder);
    
    $parametri = explode(" ", $url); 
    
    // in base alla parola chiave presente nell'url 
    // viene eseguita una determinata query, 
    // se nell'url non c'è una parola chiave, lo script termina
    
    if (strpos($url,'parolachiave1') !== false) {
       $query = "..."; 
       } else {
           if (strpos($url,'parolachiave2') !== false) {
           $query = "...";
       } else {
           if (strpos($url,'parolachiave3') !== false) {
           $query = "...";
       } else {
           if (strpos($url,'parolachiave4') !== false) {
           $query = "...";
       } else {
           if (strpos($url,'parolachiave5') !== false) {
           $query = "...";  
       } else {
           if (strpos($url,'parolachiave6') !== false) {
           $query = "...";  
       } else {
           if (strpos($url,'parolachiave7') !== false) {
           $query = "...";  
       } else {
           if (strpos($url,'parolachiave8') !== false) {
           $query = "...";  
       } else {
           if (strpos($url,'parolachiave9') !== false) {
           $query = "...";  
       } else {
           if (strpos($url,'parolachiave10') !== false) {
           $query = "...";  
       } else {
           die();
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    
    
    
    
    
    
    // connect to database
    $con=mysqli_connect($host,$username,$password,$db_name);
    
    
    // in case the query is an SELECT command, prepare for return the value
    if(stripos($query,"SELECT") !== false) $select = true;
    else $select = false;
    
    
    // case query failed
    if (!$sql_return = mysqli_query($con,$query)) {
        $mysql_error_short = str_replace("You have an error in your SQL syntax;","Syntax error",mysqli_error());         
        logfile('failed command: '.$query.'. SQL feedback: ' . $mysql_error_short);
        die("AHKERROR:300:" . $mysql_error_short);
    }
    
    
    // case query succeeded
        if ($select == true) {
            while ($sql_return_arr = mysqli_fetch_row($sql_return)) {
                $sql_return_arr = str_replace("¡","!",$sql_return_arr);            // escaping the separator signs here is necessary
                $sql_return_arr = str_replace("±","+-",$sql_return_arr);
                $cols[$i++] = implode("¡",$sql_return_arr);
                }
            echo implode("±",$cols);
        }
        else echo "AHKSUCCESS";
    
    
    // log an success message
        logfile("SQL command was executed and outputted successfully.");
    
    
    
    
    // write loggings to a logfile.txt in the same folder
      function logfile($string) {
        $today = date("m.d.y H:i:s");
        $string = $today.": ".$string."\n";
        $handler = fOpen("logfile.txt" , "a+");
        fWrite($handler , $string);
        fClose($handler);
    }
    
    
    ///// Dietmar Sach, 29.12.2010
    ?>

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Dici che
    $query = $_GET['query'];
    ma puoi farci un esempio concreto di ciò che contiene $_GET['query'] per capire perché ti serve quell'array $url_decoder?

    Comunque secondo me ti stai complicando la vita in modo assurdo.
    Ultima modifica di Alhazred; 29-11-2014 a 21:53

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    5
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Dici che
    $query = $_GET['query'];
    ma puoi farci un esempio concreto di ciò che contiene $_GET['query'] per capire perché ti serve quell'array $url_decoder?

    Comunque secondo me ti stai complicando la vita in modo assurdo.
    il fatto è che lo script originale non l'ho fatto io e non essendo un esperto di php non ho idea di quale possa essere la funzione di $url_decoder... quello che so è che lo script funziona, ad esempio, se via autohotkey invio la parola "rosso", $url nell'ultimo script da me postato sarà = "rosso".

    Se nel primo script che ho postato la query veniva ottenuta direttamente dall'url, nell'ultimo, dall'url si ricava ad esempio "parolachiave mario rossi" che sarà tradotto in query dallo script tramite gli if:

    codice:
    $url = strtr($query, $url_decoder); // $url = parolachiave mario rossi
    
    $parametri = explode(" ", $url); $// parametri[1] = mario  parametri[2] = rossi
    
    if (strpos($url,'parolachiave') !== false) {
       $query = "INSERT INTO tabella VALUES ('$parametri[1],$parametri[2])";
       } else {
            die();
       }
    // se dentro $url c'è "parolachiave" => la query è INSERT INTO tabella VALUES ('$parametri[1],$parametri[2])
    // se dentro $url non c'è "parolachiave" => non fai nulla

    Tutto ciò l'ho fatto per risolvere questo problema:

    La query la devi generare tu dinamicamente, dall'url devi farti arrivare solo i parametri, per esempio parametri che comporranno la clausola WHERE, oppure i valori per una INSERT o UPDATE e via dicendo, ma non la query completa.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.