Visualizzazione risultati 1 fino 6 di 6

Discussione: Sicurezza nell'accesso arduino-php-mysql

  1. #1
    beestatus non è connesso Neofita
    Data registrazione
    22-10-2016
    Residenza
    north garda lake
    Messaggi
    14

    Predefinito Sicurezza nell'accesso arduino-php-mysql

    Nei giorni scorsi sono riuscito con successo a connettere arduino(una periferica programmabile che può connettersi ad internet e inviare/ricevere dati) attraverso una periferica GSM al mio database mysql passando per uno script php, ve lo mostro:

    Codice PHP:
    <?php
    $conex
    = mysql_connect("server","username","dove abilito questa password??"); sarebbe un buon inizio

    if(!$conex){
    die(
    "attenzione non è possibile connettersi al server <br />".mysql_error());
    }
    else{
    echo (
    "Connesso con successo");
    print (
    "Connesso con successo");}



    $db = mysql_select_db("my_server", $conex);

    if(!
    $db){
    die(
    "attenzione, non è possibile connettersi al database <br />".mysql_error());
    }


    $Boton = $_POST["txtBoton"];
    //$Boton = $_GET["txtBoton"];

    $sql = "INSERT INTO test2 (test) VALUES ('$Boton') ";

    $res = mysql_query($sql,$conex);

    ?>
    molto bene.

    Ora questa splendida cosa comincia ad assomigliare ad un enorme voragine, chiunque conosca l'indirizzo della mia pagina php può accedere al mio database sql e chissà come utilizzarlo.

    Vi chiedo quali sono i modi per proteggere questa pagina da intrusioni esterne.

    io ho già preso in considerazione delle ipotesi, qualcuno può confermarle?

    -nascondere la pagina in un percorso difficile da trovare:/cestino/ksdjbcja/pagina.php(okniente di chè come sicurezza)
    -non lasciare il campo password vuoto(ma dove si mette la password nel db mysql)
    -non inserire nello script: "server , username, password" ma inviarli tramite $_POST (ok ma un dato in volo è sicuro o vulnerabile?)
    -aggiungere una chiamata $_POST con una password che cambia poniamo ogni 24 ore, la password è generata da uno script pseudorandom(credo ci sia di mezzo un randomseed) che viene creata in due copie una sul server l'altra da arduino; quì il mio dubbio è: come si fa a creare esattamente la stessa passw con due linguaggi diversi?

    Queste sono ipotesi un po' a "pancia" voi ne sapete di sicuro di più... benvenuto l'aiuto!
    forse ci sono già discussioni su questo argomento... non ho visto sezioni "SICUREZZA" nel menù...

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

    Predefinito

    Citazione Originalmente inviato da beestatus Visualizza messaggio
    -nascondere la pagina in un percorso difficile da trovare:/cestino/ksdjbcja/pagina.php(okniente di chè come sicurezza)
    Di sicuro aiuta, ma non significativamente. È un po' come cambiare la porta in cui sta in ascolto un server SSH: se lo lasci in ascolto sulla porta 22 riceverai migliaia di tentativi di accesso ogni giorno, effettuati automaticamente da bot e altri dispositivi a loro volta compromessi, spostandolo su una porta non-standard i tentativi di accesso vengono drasticamente ridotti.
    Nel tuo caso hai però uno script fatto da te, quindi se qualcuno cerca di attaccarlo non è un sistema automatico, quindi usare un URL complesso non è un grande ostacolo (a seconda delle informazioni e dei mezzi a disposizione dell'attaccante).
    Citazione Originalmente inviato da beestatus Visualizza messaggio
    -non lasciare il campo password vuoto(ma dove si mette la password nel db mysql)
    Non ti serve a nulla, su AlterVista non è possibile impostare una password per il database. La sicurezza del database è assicurata semplicemente dalla possibilità di connessione da parte dei soli script PHP presenti nel tuo spazio web.
    Citazione Originalmente inviato da beestatus Visualizza messaggio
    -non inserire nello script: "server , username, password" ma inviarli tramite $_POST
    Leggi sopra.
    Citazione Originalmente inviato da beestatus Visualizza messaggio
    (ok ma un dato in volo è sicuro o vulnerabile?)
    Se usi il protocollo HTTP chiunque ha modo di leggere i dati in transito può leggere il contenuto della richiesta: è tutto in chiaro.
    Citazione Originalmente inviato da beestatus Visualizza messaggio
    -aggiungere una chiamata $_POST con una password che cambia poniamo ogni 24 ore, la password è generata da uno script pseudorandom(credo ci sia di mezzo un randomseed) che viene creata in due copie una sul server l'altra da arduino;
    Una password fissa inviata assieme ai dati della richiesta POST è tecnicamente identica ad un URL complesso: anziché includerla nella prima riga della richiesta HTTP l'hai spostata nel corpo della stessa.
    Una "password" che cambia può essere un miglioramento, ma solo se l'algoritmo che ne determina il cambiamento è segreto. Tipicamente affidarsi alla segretezza di un algoritmo è considerata un pessima idea (security through obscurity): il modo più corretto di operare è definire un algoritmo non segreto, che usa un dato segreto (chiave) per operare.
    Non aiuterebbe comunque nel caso in cui l'attaccante ha modo di intercettare il messaggio e modificarlo: la seconda parte non ha modo di sapere se un attacco di questo tipo è avvenuto.
    Citazione Originalmente inviato da beestatus Visualizza messaggio
    quì il mio dubbio è: come si fa a creare esattamente la stessa passw con due linguaggi diversi?
    Devi implementare il medesimo algoritmo e usare i medesimi dati di input per ottenere un medesimo dato di output.

    La cosa più semplice nel tuo caso sarebbe usare HTTPS anziché HTTP, ed includere in ogni richiesta HTTPS un qualche token di autenticazione. In una configurazione di questo tipo il tunnel cifrato assicura l'integrità (il messaggio non può essere stato modificato da terzi, la modifica causerebbe un errore), la confidenzialtà (il messaggio è cifrato non può essere letto da terzi) e l'autenticazione (il messaggio è stato scambiato con il server e non qualcun'altro).
    A seconda del microprocessore utilizzato però un tunnel cifrato di questo tipo può essere difficile da utilizzare, a causa della poca potenza di calcolo disponibile.
    Ultima modifica di karl94 : 03-11-2016 alle ore 21.05.21

  3. #3
    beestatus non è connesso Neofita
    Data registrazione
    22-10-2016
    Residenza
    north garda lake
    Messaggi
    14

    Predefinito

    Grazie per le informazioni puntuali, tutte le mie idee dunque mi sembrano un palliativo, nascondere la pagina... già mi pareva un po' folklore più che sicurezza, nella passw su mysql ci speravo....
    per quanto riguarda un HTTPS request ho appena controllato, arduino non ha la potenza di calcolo sufficiente mi par d'aver capito.

    Il cerchio si restringe.
    E' possibile invece mettere la pagina php in un luogo dove l'accesso via HTTP richiede una password? qualcuno ha qualche idea? non mi serve chissà che sicurezza... un minimo.

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

    Predefinito

    Citazione Originalmente inviato da beestatus Visualizza messaggio
    per quanto riguarda un HTTPS request ho appena controllato, arduino non ha la potenza di calcolo sufficiente mi par d'aver capito.
    Dipende, ci sono svariate schede Arduino, che montano svariati microprocessori (con architetture anche differenti), e tante schede Arduino-compatibile. Cos'hai a disposizione nel tuo caso? Che microprocessore monta?
    Citazione Originalmente inviato da beestatus Visualizza messaggio
    E' possibile invece mettere la pagina php in un luogo dove l'accesso via HTTP richiede una password? qualcuno ha qualche idea? non mi serve chissà che sicurezza... un minimo.
    Sì, ma senza adeguata crittografia lasci sempre spazio ad attacchi. Se vuoi proteggere da semplici attaccanti che non hanno modo di leggere i dati in transito, l'uso di un URL complesso è sufficiente. Da un punto di vista pratico però sarebbe meglio includere una password od un token di autenticazione nel corpo della richiesta POST, semplicemente perché gli URL possono venire estrapolati e tracciati più facilmente da eventuali proxy e sono quasi sempre presenti nei file di log.

  5. #5
    beestatus non è connesso Neofita
    Data registrazione
    22-10-2016
    Residenza
    north garda lake
    Messaggi
    14

    Predefinito

    dunque, di nuovo grazie, aggiornandovi ho trovato questo progetto che è uguale a ciò che vorrei fare io solo fatto "bene" visto da uno poco preparato:
    http://www.esperienzahitech.it/ardui...a-arduino-php/

    chi lo ha scritto usa PDO e proprio su un sito altervista! a suo dire PDO:
    PDO (PHP Data Object) non è altro che una classe contenente diversi metodi e proprietà che permettono di garantire un accesso sicuro ad un database.
    Qualcheduno mi conferma che può essere la scelta ad hoc per il mio progettone?

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    PDO va sicuramente bene per il tuo progetto. L'unica alternativa è mysqli che, in linea di massima, si presta altrettanto bene. Se hai maggior confidenza con uno dei due, usa quello. Altrimenti, considerando che hai trovato un progetto analogo basato su PDO che puoi studiare, procedi con quest'ultimo.

    [...] garantire un accesso sicuro ad un database.
    Detta così è un'affermazione piuttosto forte! Sia PDO che mysqli possono aiutarti nella scrittura di un programma più sicuro, ad esempio usando prepared statement, ma da soli non offrono una garanzia completa.
    Ultima modifica di mzanella : 05-11-2016 alle ore 22.08.27

Tags for this Thread

Regole di scrittura

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