2010-10-06 25 views
9

Jestem nowy w zakresie bezpieczeństwa aplikacji internetowych. Zajmuję się tworzeniem aplikacji w Cakephp i jeden z moich znajomych powiedział mi o fałszowaniu żądań między witrynami (CSRF) i atakach cross-site scripting (XSS) itp. Nie jestem pewien, ile jest ich więcej.Bezpieczeństwo Cakephp

Potrzebuję pomocy w zrozumieniu, jak sprawić, by Cakephp bronił mojej aplikacji internetowej przed tymi. mamy niski budżet i od tej pory nie możemy wynająć konsulatu bezpieczeństwa. Wciąż rozwijamy aplikację i planujemy ją wydać pod koniec miesiąca. więc chcę zadbać o początkowe rzeczy, które mogą mi pomóc w zhackowaniu;)

Odpowiedz

17

Nie ma (i nie może być) jednego narzędzia, które można wdrożyć, a następnie nie trzeba już myśleć o bezpieczeństwie. Wdrażanie hacków "anty-XSS", takich jak CakePHP o numerze Sanitize::clean, spowoduje zablokowanie prawidłowych danych wejściowych, a mimo to niekoniecznie spowoduje, że aplikacja będzie bezpieczna. Wprowadzanie hacków filtrujących jest co najwyżej środkiem do zaciemniania, a nie poprawką na luki w zabezpieczeniach.

Aby mieć bezpieczną aplikację internetową, musisz napisać bezpieczną aplikację internetową od podstaw. Oznacza to przede wszystkim dbałość o szczegóły podczas umieszczania łańcuchów z jednego kontekstu do drugiego. W szczególności:

  • każdej chwili napisać ciąg do treści tekstu lub wartości atrybutu HTML, HTML-uciec (htmlspecialchars()), aby uniknąć HTML-zastrzyk prowadzącą do XSS. Nie jest to tylko kwestia danych wprowadzanych przez użytkownika, które mogą zawierać ataki, jest to poprawny sposób umieszczania zwykłego tekstu w HTML.

    W przypadku korzystania z metod pomocniczych HTML, powinny one domyślnie zadbać o wymuszanie kodu HTML tych elementów (chyba że wyłączysz escape); to bardzo niefortunne, że samouczek CakePHP zawiera złą praktykę powtarzania ciągów bez znaku w HTML dla tekstu poza pomocnikami HTML.

  • za każdym razem, gdy tworzysz zapytania SQL z wartościami łańcuchowymi, SQL-escape to (z odpowiednią funkcją dla twojej bazy danych, taką jak mysql_real_escape_string).

    Jeśli używasz ORM CakePHP i nie piszesz własnego SQL, nie musisz się o to martwić.

  • uniknąć stosując instrukcje użytkownika (np nazw przesyłania plików) do nazywania plików w systemie plików (generowanie czystych unikalne identyfikatory zamiast) lub jako część jakiegokolwiek polecenia system().

  • obejmują komponent Security, aby dodać schemat tokenów przesyłania formularzy, który uniemożliwi XSRF na formularzach generowanych przez CakePHP.

+0

dzięki za przyspieszony kurs na bezpieczeństwo. jedno pytanie podczas korzystania z HTML Helpers doesnt - htmlspecialchars() i mysql_real_escape_string() dzieje się automatycznie? –

+0

Podczas używania pomocników HTML, 'htmlspecialchars()' jest domyślnie wykonywane, tak, chyba że ustawisz ''escape' => false'. 'mysql_real_escape_string()' nie jest, ponieważ nie ma sensu być wychodzącym z HTML wyjściem HTML. To musi się zdarzyć, gdy rozmawiasz z bazą danych (i zostanie to zrobione automatycznie, jeśli używasz ORM). 'htmlspecialchars()' jest potrzebne, gdy wyprowadzasz zawartość bez pomocnika, na przykład wstawiasz nieformalną treść. na przykład. '

Witaj, !

'. – bobince

+3

"To bardzo niefortunne, że samouczek CakePHP zawiera złą praktykę powtarzania ciągów bez znaków w HTML dla tekstu spoza pomocników HTML" Zgadzam się - w ten sposób wielu nie zdaje sobie sprawy, że jest to naprawdę złe. – mark