Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapobieganie skryptom po stronie serwera, XSS

Nigdy nie wysyłaj żadnych danych do strumienia HTML, które nie zostały przekazane przez htmlspecialchars() i jesteś skończony. Prosta zasada, łatwa do przestrzegania, całkowicie eliminuje ryzyko XSS.

Jako programista jest Twoja zadanie, aby to zrobić.

Możesz zdefiniować

funkcja
function h(s) { return htmlspecialchars(s); }

if htmlspecialchars() jest za długi, aby zapisać 100 razy na plik PHP. Z drugiej strony, używając htmlentities() wcale nie jest konieczne.

Kluczową kwestią jest to, że jest kod i są dane. Jeśli połączysz te dwie rzeczy, wynikną złe rzeczy.

W przypadku HTML kod to elementy, nazwy atrybutów, encje, komentarze. Dane to wszystko inne. Dane muszą zostać ominięty, aby uniknąć pomylenia z kodem.

W przypadku adresów URL kodem jest schemat, nazwa hosta, ścieżka, mechanizm ciągu zapytania (? , & , = , # ). Dane to wszystko w ciągu zapytania:nazwy parametrów i wartości. muszą zostać ominięty, aby uniknąć pomylenia z kodem.

Adresy URL osadzone w kodzie HTML muszą być podwójnie uciekinierami (poprzez zmianę znaczenia adresu URL i HTML-escaping), aby zapewnić prawidłowe oddzielenie kodu i danych.

Nowoczesne przeglądarki potrafią analizować zdumiewająco zepsute i niepoprawne znaczniki w coś użytecznego. Nie należy jednak podkreślać tej zdolności. Fakt, że coś się dzieje (np. adresy URL w <a href> bez odpowiedniego zastosowania kodu HTML) nie oznacza, że ​​jest to dobre lub poprawne. XSS to problem, który ma swoje źródło w a) ludziach nieświadomych separacji danych/kodu (tj. „uciekających”) lub tych, którzy są niechlujni oraz b) ludziach, którzy starają się sprytnie określić, której części danych nie muszą uciekać.

XSS jest dość łatwe do uniknięcia, jeśli upewnisz się, że nie należysz do kategorii a) i b).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL wyszukaj wartość json według klucza w tablicy

  2. Tworzenie widoku MySQL z automatycznie zwiększającą się kolumną identyfikatora

  3. Uzyskiwanie dostępu do plików graficznych

  4. Naruszenie ograniczenia integralności:1452 Nie można dodać ani zaktualizować wiersza podrzędnego:

  5. Jak sprawdzić, czy mysql db jest częścią grupy?