Krok 1: Ucieczka Output dostarczone przez użytkowników
Jeśli chcesz zawierać dane w obrębie strony, które zostało dostarczone przez użytkowników, ucieczka wyjście. I na tej uproszczonej liście będziemy trzymać się jednej prostej operacji ucieczki: HTML koduje dowolne <,>, &, ",". Na przykład PHP udostępnia funkcję htmlspecialchars(), aby wykonać to typowe zadanie.
Krok 2: Zawsze używaj XHTML
przeczytać XSS strategii zapobiegania OWASP, a okaże się, że ochrona przed wstrzyknięciem wymaga znacznie więcej wysiłku, jeśli używasz nienotowanych atrybutów w kodzie HTML. Natomiast w przytoczonych atrybutach dane ucieczkowe stają się tym samym procesem, który jest potrzebny do uniknięcia danych dotyczących treści w tagach, czyli operacji ucieczki, którą już omówiliśmy powyżej. Dzieje się tak dlatego, że jedynym kłopotliwym pod względem skradającym się strukturalnie istotną treścią w kontekście cytowanego atrybutu jest końcowy cytat.
Oczywiście twój znacznik nie musi być XHTML, aby zawierać cytowane atrybuty. Jednak strzelanie i sprawdzanie poprawności w stosunku do XHTML ułatwia testowanie, czy wszystkie atrybuty są cytowane.
Krok 3: Tylko Pozwól wartości alfanumerycznych danych w CSS i JavaScript
Musimy ograniczyć dane, które pozwolą od użytkowników, będzie emitowany w ciągu CSS i JavaScript sekcji strony do alfanumerycznych (np regex jak [a-zA-Z0-9] +) typy i upewnij się, że są używane w kontekście, w którym rzeczywiście reprezentują wartości. W JavaScript oznacza to, że dane użytkownika powinny być wyprowadzane tylko w cudzysłowach przypisanych do zmiennych (np. Var userId = "ALPHANUMERIC_USER_ID_HERE";). W CSS oznacza to, że dane użytkownika powinny być wyprowadzane tylko w kontekście dla wartości właściwości (np. {color: #ALPHANUMERIC_USER_COLOR_HERE;}.) To może wydawać się Draconian, ale, hej, to powinien być prosty samouczek XSS
Teraz, dla jasności, należy zawsze sprawdzać dane użytkownika, aby upewnić się, że spełnia on Twoje oczekiwania , nawet dla danych, które są wyprowadzane w tagach lub atrybutach, jak we wcześniejszych przykładach. Jest to szczególnie ważne w przypadku regionów CSS i JavaScript, ponieważ złożoność możliwych struktur danych bardzo utrudnia zapobieganie atakom XSS.
Powszechne dane, które użytkownicy mogą chcieć dostarczyć do JavaScript, takie jak Facebook, YouTube i Twitter ID, mogą być używane z uwzględnieniem tego ograniczenia.Można również zintegrować atrybuty kolorów CSS i inne style.
Krok 4: URL zakodować URL string zapytanie Parametry
Jeśli dane użytkownika jest wysyłany w parametrze URL łącza ciąg kwerendy, upewnij się, że URL kodowania danych. Ponownie, używając PHP jako przykładu, możesz po prostu użyć funkcji urlencode(). Teraz wyjaśnijmy to i przejrzyjmy kilka przykładów, ponieważ widziałem wiele zamieszania w odniesieniu do tego konkretnego punktu.
Musi URL zakodować
Poniższy przykład wyświetla dane użytkownika, które muszą być zakodowane URL, ponieważ jest on używany jako wartość w ciągu kwerendy.
http://site.com?id=USER_DATA_HERE_MUST_BE_URL_ENCODED”>
nie może URL zakodować
Poniższy przykład wysyła dane dostarczane przez użytkownika dla całej zawartości. W takim przypadku dane użytkownika powinny zostać zastąpione standardową funkcją escape (kodowanie HTML dowolne <,>, &, ","), a nie kodowane przez URL. Kodowanie URL tego przykładu prowadziłoby do zniekształconych linków.
Jeśli ten link adres URL lub link jest z bazy danych ... bo jeśli jest z adresu URL .. y Powinniśmy filtrować "$ _GET" – Baba
Nie otrzymuję ani nie mam do czynienia z żadnym parametrem na tej stronie. –
Co rozumiesz przez to, że nie dostałeś żadnego parametru na tej stronie? – Baba