2013-09-25 12 views
11

Próbuję zabezpieczyć aplikację, ale nie mam pojęcia, od czego zacząć. W samouczku odtwarzania nie znalazłem żadnego rozdziału na ten temat. O ile widzę, temat bezpieczeństwa zmienia się pomiędzy wersjami gry. Więc czego używacie, aby zabezpieczyć swoje aplikacje. Jestem nowy w Play, więc proszę wybacz mi, jeśli zadaję oczywiste pytania.Bezpieczeństwo w Play 2.2.x

Edytuj: Ok, pytanie maby nie było wystarczająco jasne (naprawdę mi przykro z tego powodu). Mówiąc o bezpieczeństwie, mam na myśli to, że potrzebuję czegoś, co zajmować się poświadczeniami i narzędziami użytkowników, co pozwala mi ograniczyć dostęp do niektórych stron, a ostatecznie do niektórych działań związanych z odpoczynkiem w mojej aplikacji.

Edit2: Wypróbuję teraz deadbolt2, a zobaczymy, jak to działa. Ale nadal angażuję was, abyście podzielili się z Wami swoją wiedzą na temat bezpieczeństwa Play :)

+0

Co masz na myśli, zabezpieczając swoją aplikację? Dodanie ochrony hasłem do niektórych stron? Chroń cały folder? Unikaj problemów związanych z bezpieczeństwem, takich jak iniekcje SQL, cross-site scripting, ...? – ffarquet

+0

Odpowiedzi w zależności od tego, na czym naprawdę polega pytanie: 1) radzę sobie z sesjami, ciasteczkami, ... 2) htaccess 3) gra framework pozwoli uniknąć takich rzeczy, jeśli użyjesz go poprawnie – ffarquet

+0

Masz dwie możliwości: define [filter] (http : //www.playframework.com/documentation/2.2.x/ScalaHttpFilters) lub własne działanie - patrz odpowiedź @Mikesname –

Odpowiedz

4

Dokumentacja wydaje się wciąż mało aktualna na ten temat, ale zasadniczo funkcjonalność uwierzytelniania/autoryzacji jest zwykle wykonywana przy użyciu kompozycji akcji, która jest podstawa kodu kontrolnego wielokrotnego użytku w Play. Podaj przykład here (również powiązany z docs, który powinien dać ci ogólny pogląd.)

Kompozycja akcji w Play 2.2.x odbywa się za pomocą ActionBuilders. Te przyjmują blok, który akceptuje żądanie i zwraca wartość Future[SimpleResult]. Pozwala to budowniczy działanie albo wykonać z danego bloku, lub powrócić inny Future[SimpleResult] (powiedzmy, Unauthorized w przypadku gdy poświadczenia użytkownika nie sprawdzić.)

W naszej aplikacji możemy użyć modułu Play2-auth do obsługi uwierzytelnienia z plikami cookie sesji. Zostało to (właśnie) zaktualizowane do pracy z Play 2.2.x, ale używa nieco innego mechanizmu do komponowania akcji (stackable controllers.) Być może najlepiej sobie wyobrazisz, jak dokładnie można osiągnąć wymaganą funkcjonalność za pomocą natywnych narzędzi dodawanie do niego zależności.

+0

Dziękujemy za odpowiedź. Właśnie zacząłem mówić o Play2-auth i mówią, że deadbolt2 jest dla java, a Play2-auth dla scala, ale to nieprawda. Deadbolt2 jest również dla scala. Więc spróbuję z tym (deadbolt2) i zobaczymy, jak to działa. – user1887701

1

Kontrola dostępu, bezpieczeństwo itp. To bardzo szeroki temat, ponieważ oznacza bardzo różne rzeczy w zależności od kontekstu. Może to być jeden z powodów, dla których Play ma małą dokumentację, co również zaskoczyło mnie na samym początku.

Play2 ma trochę security helpers, a mianowicie jest to metoda Authenticated, aby dowiedzieć się, jak go użyć, sprawdź komentarze w kodzie źródłowym. Jest to prosta metoda, którą możesz zaimplementować samodzielnie, a większość robi. Zasadniczo proponuje on tylko strukturę miejsca, w którym można umieścić swoje metody, które sprawdzałyby, czy żądanie jest uwierzytelniane, a co należy zrobić, jeśli nie jest.

Play2 ma również pewną logikę kryptograficzną, która służy do podpisywania plików cookie.

To wszystko, nie masz już gotowych struktur bezpieczeństwa, ale to dobrze, ponieważ nie chcesz, żeby ramy podejmowania takich decyzji dla Ciebie, jeśli nie wiesz w czym kontekst zostanie użyty.

Ważne jest, aby przejść i zbadać, w jaki sposób przeprowadzane są ataki związane z Twoim wnioskiem, sprawdzone metody i tak dalej. Polecam pójście do OWASP, szczególnie do OWASP Cheat Sheets. Jeśli lista Cheat Sheets wydaje się być zastraszająca, zacznij od the OWASP Top Ten Cheat Sheet. Nie przejmuj się dużą ilością informacji, to bardzo przydatna wiedza.

2

Zgadzam się z innymi odpowiedziami, ale po prostu dodam, że używam secursocial do integracji z innymi autorytetami (Google, FB, etc ...), więc nie muszę sam robić auth. Łatwo jest zacząć działać.

https://github.com/jaliss/securesocial

Powiązane problemy