2015-07-20 20 views
13

Zastanawiam się, czy jest standard przemysłowy dla lepszego zabezpieczenia wywołań ajax na telefon komórkowy.Aplikacja mobilna Unikanie lub zabezpieczanie CORS?

Moja aplikacja mobilna składa się z plików html, js, & mojej strony internetowej - ale instaluje je lokalnie na urządzeniu mobilnym w celu zwiększenia wydajności. Lokalny index.html urządzeń mobilnych wywołuje wtedy mój serwer sieciowy dla danych (w tym przypadku Tomcat).

Jedynym sposobem znalazłem to do pracy jest umożliwienie CORS w moim apletu:

response.setContentType("text/html"); 
response.addHeader("Access-Control-Allow-Origin", "*"); 
response.addHeader("Access-Control-Allow-Methods", "GET, PUT, POST, OPTIONS, DELETE"); 
response.addHeader("Access-Control-Allow-Headers", "Content-Type"); 
response.addHeader("Access-Control-Max-Age", "86400"); 

Ale szczerze mówiąc, nie podoba mi się, że z różnych powodów, ale przede wszystkim - cokolwiek może teraz kwerendy Moje strony serwer WWW z każdy domeny i uzyskać odpowiedź ...

jaki sposób można osiągnąć ten sam wywołanie ajax do mojego serwera internetowego z urządzenia przenośnego za pomocą CORS - ale w bardziej bezpieczny sposób, tak aby tylko moja aplikacja jest dozwolone dostęp?

** LUB ** Czy CORS jest w ogóle niepoprawny w tym przypadku urządzeń mobilnych i istnieje bardziej standardowe/pożądane rozwiązanie?

+0

"Wszystko może teraz przesłać zapytanie do mojego serwera sieciowego i uzyskać odpowiedź." Dlaczego to jest złe? –

+0

@KevinWorkman, ponieważ wtedy staje się publicznym api, więc więcej niż moja strona może go nazwać. Czy patrzę na to źle? – Chris

+0

Szczerze mówiąc, nie wiem. Nie jestem facetem z sieci.Masz mój pomysł, ponieważ myślę, że to interesujące pytanie i chciałbym poznać odpowiedź sam. Mówiąc to, wydaje się, że masz dwa konkurujące cele - chcesz mieć publiczny interfejs API dla siebie, ale nie dla innych ludzi. Czego boicie się ludzie? Czy są na to sposoby? Wymaga logowania? Klucze API? Granice? Ponownie, nie mam pojęcia, o czym mówię, ale właśnie dlatego zapytałem, co jest złego w tym, że ma publiczny interfejs API. Wygląda na to, że to, co opisujesz jako problem, to cały twój cel, haha. –

Odpowiedz

1

OAuth to rozwiązania dla przedsiębiorstw i długoterminowe. Dla projektu weekendowego,

Czy myślisz o ograniczeniu metod do uzyskania tylko GET lub tylko kilku, które są potrzebne, a także zapewniają dostęp tylko do określonych zasobów?

Oto jedno obejście, którego użyłem.

Miałem podobny problem dla aplikacji kątowej js na tomcat, aby wchodzić w interakcje ze spokojną aplikacją.

Stworzyłem aplikację java i hostowałem na tym samym tomcat, na którym był obsługiwany kątowo. Ta aplikacja Java nawiązywała połączenia z zapleczem. Później zastąpiłem aplikację tomcat/java chrząknięciem i nodejs. Dobrze pracował.

nodejs wnioski przekaźnikowe było 4 linie kodu :-)

1

CORS jest standardem instruowania przeglądarek, co robić, gdy strona z innej domeny próbuje uzyskać dostęp do domeny.

Kluczowym terminem jest przeglądarek. Każdy może skonstruować żądanie (wykuwając wszystkie nagłówki, które lubią, w tym Origin), które trafiają na serwer. Na czym polega zasada "tego samego pochodzenia" i CORS, to współpracująca przeglądarka umieszcza ograniczenia na to, co mogą zrobić skrypty obce.

Więc wiadomości są dobre. Ponieważ Twój kod działa w prywatnym widoku internetowym w aplikacji, prawdopodobnie nie narażasz się na ryzyko, że obce witryny będą wyświetlać kod w Twoim widoku. (W przeciwieństwie do przeglądarek, w których wiele domen uruchamia kod w tej samej przeglądarce).

Tak długo, jak twój kod działa tylko w aplikacji, CORS nie sprawia, że ​​twoja strona jest mniej lub bardziej wrażliwa niż byłaby Inaczej.