Lista kontrolna luk w programowaniu stron internetowych

Oglądanie SO come online było dla mnie niezłą nauką. Chciałbym zrobić listę kontrolną różnych vunerabilites i exploitów używanych na stronach internetowych, i jakie techniki programowania mogą być używane do obrony przed nimi.

  • Jakie kategorie vunera?
  • Jakie techniki programowania defensywnego?
  • itd...
Author: Yeldar Kurmangaliyev, 2008-08-26

9 answers

From the Open Web Application Security Project :

  1. the OWASP Top Ten vulnerabilities (pdf)
  2. dla bardziej wyczerpującej listy: Kategoria: podatność

Pierwsza dziesiątka to:

  1. Cross-Site scripting (XSS)
  2. błędy wtryskowe (SQL injection, script injection)
  3. wykonanie złośliwego pliku
  4. niepewne bezpośrednie odniesienie do obiektu
  5. Cross-site request forgery (XSRF)
  6. informacje wyciek i niewłaściwa obsługa błędów
  7. uszkodzone uwierzytelnianie i zarządzanie sesją
  8. niepewne przechowywanie kryptograficzne
  9. niepewna komunikacja
  10. Brak ograniczenia dostępu do URL
 12
Author: Charles Miller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 22:20:09
 6
Author: David Schlosnagle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-27 00:23:28

Oczywiście przetestuj każde pole pod kątem luk w zabezpieczeniach:

  • SQL-Escape strings (np. mysql_real_escape_string)
  • XSS
  • HTML jest drukowany z pól wejściowych (zwykle dobry znak XSS)
  • cokolwiek innego, co nie jest konkretnym celem, dla którego zostało utworzone pole

Szukaj nieskończonych pętli (jedyna pośrednia rzecz (jeśli Wiele osób znalazłoby ją przypadkowo), która mogłaby naprawdę zabić serwer).

 2
Author: Ross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 19:56:27

Niektóre techniki zapobiegania:

XSS

  • Jeśli weźmiesz jakieś parametry / dane od użytkownika i kiedykolwiek planujesz je wypisać, czy to w dzienniku, czy na stronie internetowej, wyczyść je (Usuń / Usuń wszystko, co przypomina HTML, cudzysłowy, javascript...) Jeśli wydrukujesz aktualny URI strony w sobie, Wyczyść! Nawet drukowanie PHP_SELF, na przykład, jest niebezpieczne. Dezynfekować! Reflective XSS pochodzi głównie z niezaanalizowanych parametrów strony.

  • Jeśli weźmiesz jakikolwiek wkład od użytkownika i zapisz go lub wydrukuj, ostrzegaj ich, jeśli wykryte zostanie coś niebezpiecznego/nieprawidłowego i poproś o ponowne wprowadzenie. IDS jest dobry do wykrywania (takich jak PHPID.) Następnie odkaż przed przechowywaniem/drukowaniem. Następnie, gdy drukujesz coś z magazynu/bazy danych, odkaż ponownie! Input -> IDS/sanitize -> store -> sanitize - > output

  • Użyj skanera kodu podczas tworzenia kodu, aby pomóc wykryć potencjalnie podatny kod.

XSRF

  • Nigdy nie używaj żądania GET dla destrukcyjne funkcjonalność, czyli kasowanie posta. Zamiast tego, tylko Akceptuj żądania POST. GET ułatwia hackery.
  • sprawdzanie referrer, aby upewnić się, że żądanie pochodzi z twojej strony nie praca . Nie jest trudno oszukać referrer.
  • Użyj losowego skrótu jako tokenu, który musi być obecny i ważny w każdym żądaniu, a który wygaśnie po pewnym czasie. Wydrukuj token w ukrytym polu formularza i sprawdź go po stronie serwera, gdy formularz jest publikowany. Źli faceci musieliby podaj poprawny token, aby podrobić żądanie, a jeśli udało im się uzyskać prawdziwy token, musi to być przed jego wygaśnięciem.

SQL injection

  • twoja klasa abstrakcji ORM lub db powinna mieć metody dezynfekcji-używaj ich zawsze. Jeśli nie używasz klasy abstrakcji ORM lub db... powinieneś.
 2
Author: Zach,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:35:07

SQL injection

 1
Author: coder1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 19:52:18

XSS (Cross Site Scripting) Attacks

 1
Author: Bernie Perez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 19:54:12

Łatwy do nadzorowania i łatwy do naprawienia: dezynfekcja danych otrzymanych od strony klienta. Sprawdzanie, czy nie ma elementów takich jak";", może pomóc w zapobieganiu wstrzykiwaniu złośliwego kodu do aplikacji.

 1
Author: jwarzech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 22:29:20

G ' Day,

Dobrym narzędziem analizy statycznej dla bezpieczeństwa jest FlawFinder napisany przez Davida Wheelera. Robi dobrą robotę szukając różnych exploitów bezpieczeństwa,

Nie zastępuje jednak posiadania kogoś, kto zna się na czytaniu Twojego kodu. Jak mówi Dawid na swojej stronie internetowej, " głupiec z narzędziem jest nadal głupcem!"

HTH.

Cheers, Rob

 1
Author: Rob Wells,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-27 14:07:56

Możesz uzyskać dobre dodatki do Firefoksa, aby przetestować wiele wad i luk, takich jak XSS i SQL Injection z kompasu Bezpieczeństwa. Szkoda, że nie działają na Firefoksie 3.0. Mam nadzieję, że wkrótce zostaną one zaktualizowane.

 1
Author: Vertigo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:43:31