2016-09-27 8 views
5

최근에 다음을 읽었습니다. articleAngularJS 응용 프로그램의 인증 기법. 그의 개념은 내가이 프로세스에 일반적으로 접근하는 방식과 매우 유사하지만 암호가 일반 텍스트로 컨트롤러에 바인드되는 방식이 내게 보안 상 결함 인 것처럼 보이며이 문제에 접근하는 더 좋은 방법이 무엇인지 궁금합니다.AngularJS에서 암호를 올바르게 보호하는 방법

<input type="password" id="password" ng-model="credentials.password"> 

편도, 나는 컨트롤러의 바인딩 된 암호를 암호화하는 편이 좋다고 생각합니까? 그것을 할 수있는 방법이 있습니까? 토론에

+0

본 적이 있습니까? https://stackoverflow.com/questions/18959962/how-to-store-password-in-angularjs-securely – Jireugi

+0

비밀번호가 클라이언트 측 또는 요청시 일반 텍스트로되어 있는지 여부는 중요하지 않습니다. * SSL 및 POST로 완료) * 클라이언트가 이미 암호를 알고 있기 때문에 누군가가 SSL 암호화를 해독하면 더 심각한 문제가 발생할 수 있으며 SSL이 없어도 다른 사람이 요청을 수신 할 수있는 경우에는 그렇지 않습니다 그들이 진짜 암호 또는 해시 된 암호를 클라이언트에서 잡아도 문제가되지 않는다면 그들은 그 사용자 계정에 계속 액세스 할 수 있습니다. – adeneo

답변

1

내 5 센트 :

1) 만 로그인 뷰가 존재하는 동안 컨트롤러가 존재한다. 로그인 정보를 제출하면 일반적으로보기가 변경되어 컨트롤러가 손상됩니다.

2) 세션의 전체 기간 동안 존재한다고해도 데이터에 도달하려면 xss와 상당히 복잡한 체계가 필요합니다. 서버 측

  • 사용 https를

  • 사용 서명 된 서버 인증서 :

    3) 또한, 더욱 위험을 최소화하기 위해 항목의 번호를 가지고 (https를 사용한다면, 브라우저는 http 자원에 대한 ajax 호출을 허용해서는 안되며, 인증서가 sigend가 아니고 예외가 추가되지 않으면 https 요청이 실패합니다. 사이트)

    4) 마지막으로 서버에서 지원하는 경우 oAuth를 사용하여 인증 할 수 있습니다.

    5) Ofc. 모든 것은 응용 프로그램에 필요한 보안 수준에 따라 다릅니다. 사람이 컴퓨터를 사용하지 않는 동안 암호를 알아내는 것이 정말 염려되는 경우 클라이언트 인증서 (스마트 카드 사용) 또는 추가 1 회 코드 또는 다른 것과 같은 다른 인증 방법을 고려해야합니다. 비슷한.

관련 문제