Come non permettere a nessuno di ispezionare elementi di una pagina web?

-5

Stavo pensando di creare alcune funzioni jQuery che useranno ajax per controllare mysql. L'idea è quella di creare file separati di PHP (ad esempio, query.php, addRow.php, update.php e delete.php) fornendo i dati a loro tramite le variabili GET come query.php?sql=SELECT * FROM table e quindi controllandoli con le funzioni jQuery AJAX che farò più tardi. Codice previsto:

$(element).click(function (e) {
    mysql.query("DELETE row FROM table WHERE name = 'John Doe'");
});

Quindi invierà la query tramite AJAX e verrà eseguita la query.
Quindi il problema è SICUREZZA . Voglio dire, chiunque può semplicemente cambiare javascript dall'ispettore del browser o usare la console per controllare i miei database. Cosa si può fare per questo problema. È comunque necessario non consentire a nessuno di modificare gli elementi nella console del browser. In caso contrario, ANYWAY per superare questo problema di sicurezza?

    
posta Rana Faiz Ahmed 03.05.2014 - 09:46
fonte

5 risposte

29

Mai esporre l'accesso diretto al tuo database dal livello web. Non puoi mai bloccarlo; qualcuno manda "DROP TABLE table" al tuo server, per quanto blocchi la sorgente JS.

Tutto ciò che devono fare è vedere ciò che il browser invia al tuo server per rilevare che il tuo server accetta comandi SQL arbitrari.

Non è possibile bloccare il codice JS; non è il browser di cui devi preoccuparti, chiunque può inviare una richiesta HTTP e iniziare comunque a introspettare il tuo codice lato client.

Costruisci invece una RESTful API , usala dal client. Tale API è limitata nel danno che può fare se qualcuno inizia a chiamarlo direttamente.

    
risposta data 03.05.2014 - 09:52
fonte
7

Is there anyway to not let anyone change elements in the browser console. If not is there ANYWAY to overcome this security problem?

No.

Tutto ciò che è in una risposta HTTP consegnata alla macchina di un utente può essere intercettato e letto / modificato dall'utente ... se ha un po 'di esperienza tecnica. Ciò include tutto ciò che viene fornito crittografato e decodificato al volo nel browser dell'utente.

E anche se si potesse impedire all'utente di modificare l'SQL nella pagina Web, non è possibile impedire che inviino un SQL diverso al proprio database, utilizzando le credenziali di autenticazione del database integrate nel Javascript.

    
risposta data 03.05.2014 - 11:10
fonte
1

Is there anyway to not let anyone change elements in the browser console

Utilizza Flash;)

Ma seriamente ... non fare mai dipendere la tua sicurezza da nulla nel browser. Ad esempio, qualcuno potrebbe simulare un browser. Qualunque cosa non sia sotto il tuo diretto controllo (cioè su un server bloccato) non ha garanzie.

    
risposta data 16.11.2017 - 20:22
fonte
0

Suggerirei di non esporre il tuo database via web ad alto rischio su SQL Injection e sulla distorsione dei dati.

Piuttosto che a questo è possibile creare un livello di accesso ai dati separato che è a corto di funzioni del database che interagiranno con il database. Ogni volta che è necessario includere il file di funzione richiesto nel codice e passare l'oggetto di connessione facendo riferimento alla funzione.

Assicurati inoltre che la funzione non utilizzi affatto il registro $ _SESSION globale.

Crea un file di configurazione del database separato che contenga il nome del database, il nome utente e la password altre informazioni pertinenti. Ora crea l'oggetto di connessione con l'uso di questi dettagli di configurazione e passa il singolo oggetto di connessione facendo riferimento a qualsiasi query che fai.

Vantaggi di questo.

  1. Questo ridurrà il numero totale di connessioni al database
  2. ridurre i rischi per la sicurezza perché dbconfig.inc, dataretrive.fn.php e altri file correlati sono mantenuti nella directory di accesso limitato che è anche non accessibile dai crawler.
  3. Il sito utilizzerà automaticamente il pool di connessione del database comune.
risposta data 23.05.2014 - 12:40
fonte
-1

Come programmatore di 20 anni sono sorpreso che la programmazione HTML / php sia così debole nel modo in cui un utente può utilizzare l'elemento inspect per modificare un valore, ad esempio, id prodotto prima dell'invio.

La mia soluzione è usare le variabili di script java e usare solo HTML come le caselle di testo per informare l'utente delle mie intenzioni.

es dichiarare le variabili in uno spazio globale i.e al di fuori di una funzione.

L'esempio seguente utilizza la libreria di query j.

È un piccolo esempio.

La dimostrazione è che cambiando il valore della casella di testo c usando inspect l'elemento non cambierà il risultato finale visualizzato nella casella di testo del risultato.

Quando si salvano i dati sul server, salvare i valori javascript su server ... non i valori html.

             <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

      <script>
      var a = 0;
      var b = 0;
      var result= 0;
      </script>

e posso usare i valori mentre informo l'utente nelle caselle di testo HTML

      <script>
       a = 5;
       $('#a').val(a);
       b = 3;
       $('#b').val(b);




       result=a+b;
       $('#result').val(result);

       alert(result);

       </script>

    
risposta data 19.04.2015 - 23:02
fonte

Leggi altre domande sui tag