2011-07-12 8 views
10

Google plus zwraca żądania ajax z )]}' w pierwszej linii. Słyszałem, że to ochrona przed XSS. Czy są jakieś przykłady, co i jak można zrobić z tym bez tej ochrony?"Ochrona przed XSS" przez dodanie)]} 'przed odpowiedzią ajaxową

+0

Powiązane: [Dziwna odpowiedź JSON w Google Plus] (http: // stackoverflow.com/questions/6618441/strange-json-response-in-google-plus) – dtb

+0

To jest dokładnie pytanie, które mówiłem o "Słyszałem, że to ochrona przed XSS". – genesis

+0

czy to będzie nowe pytanie? Możesz uzyskać więcej informacji w drugim pytaniu ... –

Odpowiedz

15

Oto moje najlepsze przypuszczenie co się tutaj dzieje.

Po pierwsze, istnieją inne aspekty formatu json google, które nie są całkiem poprawne json. Tak więc, oprócz jakichkolwiek celów ochrony, mogą używać tego konkretnego ciągu znaków, aby zasygnalizować, że reszta pliku jest w formacie google-json i musi być odpowiednio zinterpretowana.

Korzystanie z tej konwencji oznacza również, że plik danych nie będzie wykonywany z połączenia za pomocą znacznika skryptu ani interpretacji javascript bezpośrednio z eval(). Dzięki temu deweloperzy z przodu będą przekazywać zawartość za pomocą analizatora składni, co uniemożliwi wykonanie wszczepionego kodu.

Aby odpowiedzieć na twoje pytanie, istnieją dwa prawdopodobne ataki, które to uniemożliwiają, jeden przekierowany przez znacznik skryptu, ale bardziej interesujący jest na stronie. Oba ataki Zakładamy, że:

  1. błąd istnieje w jaki sposób dane użytkownika uciekł i
  2. jest ona wykorzystywana w sposób, który pozwala atakującemu wstrzyknąć kod w jednym z plików danych.

Jako prosty przykład, powiedzmy, że użytkownik zorientowali się, jak wziąć ciąg jak przykład

["example"] 

i zmienił je na „]; alert ('Przykład');

[""];alert('example');"] 

Teraz, gdy dane pojawią się w kanale innego użytkownika, osoba atakująca może wykonać dowolny kod w przeglądarce użytkownika, ponieważ znajduje się on w witrynie, pliki cookie są wysyłane na serwer, a osoba atakująca może zautomatyzować takie czynności, jak udostępnianie wpisów lub wysyłanie wiadomości do użytkowników z konta użytkownika.

W scenariuszu Google ataki te nie będą działały z wielu powodów. Pierwsze 5 znaków spowoduje błąd javascript przed uruchomieniem kodu ataku. Dodatkowo, ponieważ programiści są zmuszeni przeanalizować kod zamiast przypadkowo uruchomić go przez eval, ta praktyka i tak uniemożliwi wykonanie kodu.

7

Jak mówili inni, jest to ochrona przed Krzyż Script Site Integracji (XSSI)

Wyjaśniliśmy to na Gruyere jak:

Po trzecie, należy upewnić się, że skrypt nie jest wykonywalny . Standardowym sposobem wykonania tej czynności jest dodanie do niej przedrostka, który nie jest wykonywany, do , np.])} While (1) ;. Skrypt działający w tej samej domenie może odczytać zawartość odpowiedzi i usunąć prefiks, ale skrypty działające w innych domenach nie mogą tego zrobić.

Powiązane problemy