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