2012-07-30 2 views
3

AngularJS를 사용하여 사이트를 만들면 사용자가 사이트에서 계정을 만들고 페이지를 다시로드하지 않고 원활하게 로그인 할 수 있습니다. 이처럼 사이트를 만들려면 AngularJS 라우팅을 사용하여 여러 부분으로로드하고 xhr을 통해 PHP 스크립트에 액세스하려면 $ http를 사용합니다. 이미 언급했듯이 서버 사이드 스크립팅을 위해 PHP를 사용하고 mysql을 사용하여 데이터를 저장합니다.AngularJS : 방화 광 및 사용자 세션에서 아약스 데이터 숨기기

내 문제는 페이지가 다시로드되지 않고 $ http 서비스를 통해 서버에 제출 된 데이터가 방화 광구 (또는 이와 동등한 도구)의 네트워크 탭에 표시됩니다. 즉, 암호와 같은 개인 데이터는 페이지가 닫힐 때까지 이러한 도구를 통해 노출 될 수 있습니다. 이제 사용자가 모든 도구에서이 데이터를 볼 수 없게하는 방법을 찾고 싶습니다. 나는 데이터 클라이언트 측을 암호화 할 수있다. 그 문제는 스크립트가 여전히 노출되어 있다는 것입니다. 다른 사람이 이것을 문제로보고 주변을 둘러 볼 방법을 찾았습니까?

내가 고려해야 할 또 다른 사항은 각도로 사용자 세션을 저장하는 가장 좋은 방법은 무엇입니까? PHP 세션을 사용하고 $ http를 사용하거나 쿠키를 사용하여 상태를 확인하는 것이 가장 좋을까요? 다시 두 가지 방법 모두 보안과 관련된 문제가 있습니다. 쿠키의 경우 내용을 암호화해야하고 세션 변수를 사용하여 ajax를 통해 데이터를 앞뒤로 전달해야하므로 방화 광을 사용하여 모든 내용에 액세스 할 수 있습니다. 다시 한번 저는 이것에 대한 사람들의 의견을 알고 싶습니다.

+3

이것이 표준 HTTP POST보다 더 많은 보안 위험이있는 이유는 확실하지 않습니다. 누군가가 Firebug를 열고 Network 탭에서 "persist"를 클릭하면 AJAX 또는 페이지 재로드 여부와 상관없이 앞뒤로 이동하는 모든 데이터를 추적 할 수 있습니다. – IMSoP

+0

편집으로 인해 이걸 다시 보았습니다. 나는이 질문을 지금까지도 썼다. 그것은 내가 이제까지 생각하지 않는 것입니다. 또한 파이어 버그를 더 이상 사용하지 않습니다. 내가 마지막으로했을 때도 기억이 안납니다. – Lightbulb1

답변

2

암호 가시성 문제에 대해 클라이언트 측 암호 해싱 작업을 수행 할 수 있습니다. 자바 스크립트 코드는 예 (yes)로 표시되지만 문제가되지 않습니다. 해시 함수는 단방향이므로 해시 결과를 기반으로 암호를 검색 할 수 없습니다. javascript는 비밀이 아니기 때문에 소금을 하드 코딩 할 수 있습니다 (https://stackoverflow.com/a/536756).

선택적으로 데이터베이스 값과 비교하기 전에 서버 측에서 두 번째 해시를 구현할 수 있습니다. 그러나 이는 암호 값 읽기로 이어지는 취약점이있는 경우에만 보호 기능을 제공하지만 동일한 취약점으로 인해 데이터베이스 업데이트가 허용되지 않습니다.

다른 데이터의 경우 diffie-hellman 키 교환을 고려할 수 있습니다.

클라이언트 측에서 실행되는 자바 스크립트가 실제로 제공 한 스크립트인지 확인하려면 https가 필요합니다. 또한 채널을 보호하지만 브라우저 나 방화 녀 (Is this correct? Should firebug see SSL-protected AJAX?)에는 영향을 미치지 않습니다.

나는 angularjs 및 PHP와 비슷한 것을 구현하고 있지만 클라이언트 측 해시 또는 diffie-hellman 키 교환을 사용하지 않기로 결정했습니다. 자신을 보호하는 시나리오는 시작하기가 어렵습니다. 침입자는 로그인하기 전과 후에 브라우저에 액세스해야합니다.

관련 문제