2009-09-03 13 views
5

Jako programista korzystam z PHP i wiem, że muszę się martwić o bezpieczeństwo, ale kiedy korzystasz z frameworka, jest dużo kodu i projektu, który przekazujesz, ale nie zrobiłeś tego. t kodu lub projektu i na przykład używam CakePHP.php frameworks and security

  • więc w tym przypadku z frameworkiem ile powinienem martwić się o bezpieczeństwo?

Odpowiedz

9

Zawsze należy kontynuować przestrzegając podstawowych zasad bezpieczeństwa:

  • nie ufa użytkownikowi
  • nigdy zaufać użytkownikowi

Które troche oznacza:

  • filtrowanie/sprawdzanie poprawności wszystkiego, co przychodzi do aplikacji
  • uciec z dowolnego wyjścia.


Korzystanie ramy nie zmienia się wiele o tym, z wyjątkiem:

  • Wyjście do bazy danych często es jakąś warstwę ram, które powinny zajmować się ucieczką
  • ram często zapewnić rozwiązania w zakresie filtrowania/sprawdzania poprawności; używaj ich ;-)
  • Struktura często zawiera pewne wskazówki; Przeczytaj je.


Jak sidenote: mówiłeś to:

jest dużo-kodu i projektu, który Państwo przekazywać dalej, ale że nie kod lub projekt

Biorąc pod uwagę, że używasz dobrze znanego frameworka, z którego korzysta wiele osób, ten kod został prawdopodobnie przetestowany/sprawdzony niż jakikolwiek kod, który mógłbyś napisać ;-)

Jest to zaleta open-source: nie jesteś jedyną osobą odpowiedzialną za kod i wiele oczu go zobaczyło - co oznacza, że ​​wiele rąk go poprawiło.

4

Jest wiele rzeczy, które należy wziąć pod uwagę, gdy mamy do czynienia z bezpieczeństwem w aplikacji. Jak powiedział Pascal, dobrym pomysłem jest skorzystanie z popularnego środowiska, na które patrzy wiele osób.

Widzę kilka obszarów budzących niepokój w odniesieniu do CakePHP.

Pierwszy problem to użytkownik końcowy. Powinieneś oczekiwać, że ktoś zrobi coś głupiego na każdej stronie, którą zbudujesz.Oto kilka przykładów:

  • Osoba szybko klikająca przycisk przesyłania. To może skośno lub zepsuć twój system w taki sposób, jeśli nie jesteś ostrożny. Rozwiązanie tego nie opiera się na strukturze, ale raczej na metodologii i testowaniu kodu.
  • Injection SQL i inne złe rzeczy. Każde pole na stronie może być potencjalnie nadużywane, dlatego każdy element formularza musi zostać poddany sanityzacji. CakePHP ma proste metody, aby zająć się tymi problemami bezpieczeństwa. http://book.cakephp.org/view/153/Data-Sanitization
  • Czyste adresy URL są bardzo ważne. Nigdy nie należy projektować systemu, który umożliwia użytkownikowi bezpośredni dostęp do kluczy podstawowych. Na przykład, jeśli masz stronę, która ma/show_user/2098, wtedy ktoś może po prostu wpisać w show_user/2097, aby zobaczyć konto kogoś innego. CakePHP umożliwia łatwe wprowadzanie wtyczek lub UUID, aby temu zapobiec.

Po drugie, musisz być zaniepokojony atakami dotyczącymi samego kodu i uprawnień. Na przykład:

  • Nigdy nie używaj eval() lub system() w kodzie z danych, które mogą pochodzić od użytkownika końcowego. W przeszłości były aplikacje pisane w perl, które zostały uprowadzone z powodu tego problemu.
  • Struktura folderów i uprawnienia są ważne z punktu widzenia bezpieczeństwa. Użytkownicy nigdy nie powinni mieć dostępu do zapisywalnego katalogu. W CakePHP struktura folderów jest zaprojektowana tak, aby można było wskazywać apache bezpośrednio do aplikacji/webroot. Oznacza to, że katalog tmp znajduje się poza ścieżką apache, przez co system jest trochę bezpieczniejszy.

Po trzecie, powinieneś być zainteresowany ochroną swoich stron administracyjnych i kto ma uprawnienia dostępu do tego, co.

  • CakePHP ma komponent Auth i Acl, który pozwala wybrać, które użytkownicy mają dostęp do których stron. To wykorzystuje niestandardowe sesje Cake, które mogą być przechowywane w bazie danych, przy użyciu PHP lub zapisane w systemie plików.

Sugerowałbym przeczytanie niektórych ważnych elementów i upewnienie się, że zostały poprawnie skonfigurowane, aby stworzyć aplikację bez wad bezpieczeństwa. Przyjrzyj się niektórym z tych elementów podczas dalszych badań: http://book.cakephp.org/view/170/Core-Components

Powiązane problemy