2011-11-22 15 views
18

Jak ukryć zapytania ajaxowe z konsoli firebug lub czegokolwiek, co wyświetla wywołania ajax?Jak ukryć zapytania ajaxowe z konsoli firebug?

+0

Dlaczego? Dla własnej wygody? Lub jako funkcja "bezpieczeństwa"? – Thilo

+0

Dla celów bezpieczeństwa. – niksmac

+10

"Dla celów bezpieczeństwa." Jeśli myślisz o zabezpieczeniu się przed hakerami w ten sposób, to nie zadziała. Nie można ukryć działań przeglądarki od użytkownika, który uruchamia tę przeglądarkę. Nawet jeśli możesz przekonać użytkownika, aby nie patrzył (a 99% użytkowników nie będzie dbać o Firebug), nie możesz polegać na tym w sprawach związanych z bezpieczeństwem. – Thilo

Odpowiedz

7

Wykonaj połączenia JSONP. Wywołania JSONP nie są prawdziwymi żądaniami ajaxowymi (ponieważ nie używają obiektu XMLHttpRequest i po prostu wprowadzają znacznik skryptu do DOM). Ale nie zostaną pokazane w Firebug.

+4

Firebug pokazałby je w zakładce "Net" (gdzie wyświetla obrazy, css itd.), Nie? – Thilo

+1

Tak, nadal możesz śledzić go w zakładkach * Net *. –

+1

JSONP nie jest możliwe do zrealizowania na tym etapie, ponieważ bardzo dużo pokrywałem z tym projektem. Jakieś inne sugestie ? – niksmac

1

Nie sądzę, że będziesz w stanie całkowicie ukryć połączenia z oprogramowaniem do podsłuchiwania, ponieważ niektóre pakiety do podsłuchiwania działają na bardzo niskim poziomie (tak nisko, że nie możesz się tam dostać z przeglądarki/kodu).

Jeśli chcesz zamaskować połączenie (np. Ukryć w miejscu połączenia), możesz wysłać je na własny serwer, a następnie serwer może sam wykonać połączenie (za pomocą niektórych zamaskowanych poleceń).

Jak nazywając http://myserver.com/doCommand?command=cmd1&parameter1=param1&parameter2=param2

a serwer może mieć logiki, która będzie czytać polecenia i parametry, wykonać je z powrotem, a następnie zgłosić się z wynikami. W każdym razie połączenie między klientem (przeglądarką) a serwerem może zostać przechwycone przez oprogramowanie podsłuchujące.

To jest bardzo podobne do proxy. Klient może zobaczyć, co dzieje się z proxy, ale nie będzie wiedział, co stanie się dalej.

W każdym razie wydaje się, że masz problem z samą architekturą po tym, jak zaczniesz maskować połączenia od dzwoniącego, a nie od świata zewnętrznego.

11

Zadzwoń tę funkcję po ajax Süßes lub nie

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

LUB

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

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

Nadal będzie to widoczne na zakładce Netto – San

+2

Spowoduje to również wyczyszczenie pozostałych informacji debugowania. Spodziewam się, że pytający po prostu chce usunąć dodatkowy hałas z konsoli. –

0

podobne do tego, co Saeed mówił z jsonp, można zmienić źródło obrazu/pliku/skryptu " src "atrybut. Serwer wyśle ​​żądanie po zmianie, umożliwiając w ten sposób komunikację z serwerem. Nie próbowałem tego, ale zamierzam go sam wdrożyć do czegoś.

4

Użyj binarnego websocket.

Mimo że niektóre przeglądarki nadal pozwalają użytkownikom na sprawdzenie "zawartości pakietów websocket w niektórych przypadkach, jest to zwykle ograniczone do stron internetowych z tekstem i dużo trudniejsze dla danych binarnych ... a zdecydowanie na pewno nie pojawi się w konsola.

Jest to podejście stosowane przez Livereload (http://livereload.com/) w celu uniknięcia spamowania konsoli za pomocą żądań ajaxowych, które sprawiają, że korzystanie z konsoli do rzeczywistego debugowania jest znaczące.

Oczywiście, podobnie jak inne posty w tym wątku stwierdzili, że nie może uniemożliwić komuś odłowu żądań za pomocą narzędzi, takich jak Wireshark; ale prawdopodobnie binarne gniazdo sieciowe zniechęciłoby 90% przypadkowych ingerencji, jakie można uzyskać przy standardowych żądaniach ajaxowych.

+1

Wyjaśnienie tego nie jest możliwe, ale zniechęci większość ludzi. –

3

Próbowałem jQuery, ale zawsze używał normalnych wywołań ajax.Według dokumentów: żądania z "JSONP" lub "script" dataType i typu "GET" powinny skutkować trybem "skryptu" transportu. Działa to w ten sposób:

stronie klienta:

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); 

stronie serwera:

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

Interesujące podejście, ale po prostu, aby upewnić się: usuwa skrypt z nagłówka i ponownie dodaje go po żądaniu. Serwer wypluwa nowy nagłówek i po prostu wysyła OK do debuggera. Jednak w jaki sposób zapobiega się wyświetlaniu listy getRefreshed w konsoli? Czy ktoś to przetestował? – Armfoot

Powiązane problemy