2011-11-22 14 views
18

Come nascondere richieste ajax dalla console di Firebug o qualsiasi cosa che mostri le chiamate ajax?Come nascondere le richieste Ajax dalla console Firebug?

+0

Perché? Per tua comodità? O come funzionalità di "sicurezza"? – Thilo

+0

Per scopi di sicurezza. – niksmac

+10

"Per scopi di sicurezza." Se stai pensando di proteggerti dagli hacker in questo modo, non funzionerà. Non è possibile nascondere le attività del browser all'utente che sta eseguendo quel browser. Anche se riesci a convincere l'utente a non guardare (e il 99% degli utenti non si cura di Firebug) non devi fare affidamento su ciò per questioni rilevanti per la sicurezza. – Thilo

risposta

7

Effettuare chiamate JSONP. Le chiamate JSONP non sono vere richieste Ajax (perché non usano l'oggetto XMLHttpRequest e semplicemente inseriscono un tag script nel DOM). Ma non verranno mostrati in Firebug.

+4

Firebug mostrerebbe loro nella scheda "Rete" (dove mostra immagini, css e così via), no? – Thilo

+1

Sì, è ancora possibile rintracciarlo nelle schede * Net *. –

+1

JSONP non è possibile implementare in questa fase poiché ho coperto molto con questo progetto. Qualche altro suggerimento? – niksmac

1

Non penso che sarete in grado di nascondere completamente le chiamate da qualsiasi software di sniffing a causa del fatto che alcuni pacchetti software di sniffing funzionano su un livello molto basso (così basso che non è possibile arrivarci dal browser/codice).

Se si desidera mascherare una chiamata (ad esempio, nascondere la destinazione della chiamata), è possibile inviarla a un proprio server e quindi il server può effettuare la chiamata stessa (utilizzando alcuni comandi mascherati).

come chiamare http://myserver.com/doCommand?command=cmd1&parameter1=param1&parameter2=param2

e il server può avere la logica che leggerà il comando ei parametri, eseguirli e poi riferire con i risultati. In ogni caso, la chiamata tra il client (browser) e il server può essere intercettata dal software di sniffing.

È molto simile a un proxy. Il client può vedere cosa va al proxy ma non saprà cosa succederà dopo.

In ogni caso sembra un po 'come se si verificasse un problema con l'architettura stessa dopo aver mascherato le chiamate dal chiamante e non dal mondo esterno.

11

Si prega di chiamare questa funzione dopo ajax susses o fallire

$('.result').load('testtemplateboth/testpagetpl'); 
    clearconsole(); 

O

$('.log').ajaxComplete(function() { 
    clearconsole(); 
    $(this).text('Triggered ajaxComplete handler.'); 
}); 

function clearconsole() { 
    console.log(window.console); 
    if(window.console || window.console.firebug) { 
    console.clear(); 
    } 
} 
+2

Ancora sarà visibile nella scheda Rete – San

+2

Ciò cancellerebbe anche il resto delle informazioni di debug. Mi aspetto che il richiedente voglia solo rimuovere il rumore extra dalla console. –

0

Simile a quello che Saeed stava dicendo con JSONP, è possibile modificare l'origine di un'immagine/file/script " src "attributo. Il server invierà la richiesta quando cambia, rendendo così possibile comunicare con il server. Non ho provato questo, ma sto cercando di implementarlo per qualcosa di me stesso.

4

Utilizzare una rotaia binaria.

Anche se alcuni browser consentono ancora agli utenti di "ispezionare" il contenuto dei pacchetti Websocket in alcuni casi, questo è generalmente limitato alle websocket di solo testo e molto più difficile per i dati binari ... e sicuramente non verrà visualizzato in la console.

Questo è l'approccio che Livereload (http://livereload.com/) utilizza per evitare lo spamming della console con richieste ajax che rendono significativo l'utilizzo della console per il debug reale.

Ovviamente come gli altri post in questa discussione hanno dichiarato che non è possibile che impedisca a qualcuno di ricevere effettivamente richieste utilizzando strumenti come Wireshark; ma probabilmente un socket web binario scoraggerebbe il 90% della manomissione casuale che potresti ottenere con le richieste standard di Ajax.

+1

Per chiarire non è possibile ma scoraggerà molte persone. –

3

Ho provato jQuery ma ha sempre utilizzato normali chiamate Ajax.Secondo i documenti: le richieste con tipo "JSONP" o "script" dataType e "GET" dovrebbero risultare modalità di trasporto "script". Funziona in questo modo:

lato client:

var h = $('head')[0]; 
var e = document.createElement('SCRIPT'); 
e.src = "/c.php?getRefresh=1"+("&_="+(+new Date())); 
e.onload = function(){ 
    //script from server executed  
    h.removeChild(e); 
} 
h.appendChild(e); 

lato server:

if(isset($_GET['getRefresh'])){ 
    header("Content-Type: text/javascript"); 
    die("console.log('OK');"); 
} 
+0

Un approccio interessante ma solo per essere sicuro: rimuove lo script dall'intestazione e lo aggiunge nuovamente dopo la richiesta. Il server sputa una nuova intestazione e invia semplicemente un OK al debugger. Tuttavia, in che modo viene impedito l'inserimento di getRefreshed nella console? Qualcuno ha provato questo? – Armfoot

Problemi correlati