로컬 스토리지는 얼마나 안전합니까?


33

문제는 모든 것을 실제로 말합니다. 서비스를 제공하고 싶지만 데이터를 데이터베이스에 직접 저장하고 싶지 않습니다. 해킹 등의 모든 최신 뉴스를 통해 고객이 데이터를 완벽하게 제어하는 ​​것이 더 좋을 것 같습니다.

문제는 저장된 데이터가 잠재적으로 민감하다는 것입니다. 내가하려고했던 것은 ... 고객이 웹 사이트를 방문 할 때 '개인용 컴퓨터 나 공용 컴퓨터를 사용하고 있는지'라는 질문이있을 것입니다. 이들이 공용 컴퓨터에 있으면 사이트에서 액세스를 거부합니다.

개인용 컴퓨터에있는 경우 암호를 설정하라는 메시지가 표시됩니다. 모든 데이터는이 암호로 암호화됩니다. 분명히 이것은 너무 안전하지 않습니다. 암호화 방법은 JavaScript와 일반 텍스트로 된 암호이므로 잘 알고있는 사용자가 localStorage에서 암호를 찾아 데이터에 액세스 할 수 있다고 가정합니다.

나는 이것이 너무 큰 문제는 아니라고 생각합니다. 개인용 컴퓨터를 사용하는 경우 다른 사람이 컴퓨터의 특정 사용자 계정에 액세스해야하고 다른 사람이 사이트에 대해 알아야하는 경우 다른 사람이이를 이해해야하는 경우와 같이 이러한 일이 발생할 가능성은 매우 적습니다. localStorage 및 액세스 방법. 민감한 데이터는 신원이나 그 밖의 많은 것을 훼손하지 않습니다. 그것은 대부분의 사람들이 공개적으로 원하지 않는 것을 기록합니다.

따라서 실제로 문제는 localStorage가 충분히 안전합니까?

추가 질문 .. localStorage를 지우는 것이 얼마나 어려운가요? 사용자가 실수로 데이터를 지우고 싶지는 않습니다.

마지막으로-사이트에 액세스 할 수있는 비밀번호가있는 것처럼 데이터를 암호화 / 복호화 할 가치가 있습니다.


2
클라이언트 측 JavaScript는 암호화를 수행하기에 가장 좋은 장소는 아닙니다. 모든 정통 사용자는 코드를보고 암호화 알고리즘을 해킹하여 실제로 아무 것도하지 않고 암호화 된 비밀번호 만 허용하도록 만들 수 있습니다.

답변:


10

로컬 저장소가 아닌 암호를 전혀 저장하지 않는 것은 어떻습니까? 키 파생 함수를 사용하여 비밀번호에서 키를 얻을 수 있습니다. 소금과 합리적인 반복 횟수를 사용하면 괜찮을 것입니다.


암호가 PHP에 제출되어 뒤에서 키를 생성하면 더 안전합니까?
JasonS

아니요. 비밀번호는 처음에 클라이언트에 제공됩니다. 서버로 보내면 도난 위험이 높아집니다. JS에서 키 파생을 수행하면 클라이언트의 비밀이 유지됩니다. 모든 경우에 그 직후 PW를 잊어야합니다. 그러나 나는 그것이 여전히 무의미하다고 생각합니다. 내 대답을보십시오.

많은 해커들은 매우 지능적입니다 ... Lib bCrypt를 사용하십시오.
Eddie B

2

로컬 저장소와 함께 JavaScript를 사용하는 것이 최대한 안전합니다 (서버와 브라우저와 서버 간 연결).

누군가가 서버를 수정하고 다른 JS 파일을 제공하거나 서버에서 클라이언트로 보낸 JS 파일을 수정하는 동안 (전송되는 동안) 원하는 데이터로 무엇이든 할 수 있습니다.

또한 : 데이터가 클라이언트에 있으므로 데이터를 보호하기 위해 아무 것도 할 수 없습니다. 일반 서버에서는 예를 들어 액세스 빈도를 제한 할 수 있습니다 (원격 암호 안전의 예 : 10 분 내에 1 개의 암호 만 읽음). 데이터가 클라이언트에 있고 데이터로 작업하는 모든 코드를 공격자가 조작 할 수 있으면이 모든 것이 쓸모가 없습니다.

결국 로컬 스토리지를 사용하더라도 웹 애플리케이션을 보호해야합니다! 그렇다면 왜 안전한 서버에서 일을합니까? 클라이언트에 설치된 로컬 프로그램을 사용하지 않는 이유는 무엇입니까?


다른 사람이 기기를 사용하거나 도난당한 경우 주요 보안 문제가 아니라고 생각하십니까?

2

localStorage 데이터를 해독하는 데 사용되는 서버에서 키를 얻는 방법은 무엇입니까?

다음과 같이 작동 할 수 있습니다.

  • 세션이 설정되면 서버는 키를 반환합니다.
  • 이 키는 localStorage의 데이터를 암호화 / 복호화하는 데 사용됩니다.
  • 사용자가 페이지를 떠날 때 키가 유실되어 다른 사람이 localStorage에있는 내용을 읽지 못하게합니다.

사용자가 세션을 설정 한 동안에 만 액세스를 허용해야합니다.


3
로컬 데이터의 기본 사용 사례처럼 보이지만 오프라인으로 데이터에 액세스하는 것은 작동하지 않습니다. 이 방법을 오프라인으로 사용하려면 키를 유지해야합니다.
Timothy Lee Russell

0

일반적으로 로컬 저장소를 지우는 것은 어렵지 않지만 브라우저에 따라 다릅니다. 브라우저 개발자 도구 (파이어 버그, 웹킷 등)를 가져와야합니다.

쿠키를 생각하는 것처럼 생각하십시오. 중요한 데이터는 로컬 저장소에 보관해서는 안됩니다. 비밀번호, 신용 카드 번호 등

x 비활성 시간이 지나면 로컬 저장소를 지우는 기능을 항상 구현할 수 있지만 보안 문제는 해결되지 않습니다. 자동 세션 만료와 같습니다. 사람이 컴퓨터를 떠난 후 세션이 만료되기 전에 다른 사람이 앉아 있으면 동일한 문제가 적용됩니다.


0

두 가지 문제 :

  1. 일반 텍스트 암호를 저장 한 다음 찾을 수없는 사실에 의존하는 경우 모호함을 통한 보안 일뿐입니다. 데이터를 일반 텍스트로 저장하고 동일한 가정에 의존하십시오 (여전히 안전하지는 않지만 잘못된 보안 감각은 없음)

  2. 대부분의 브라우저에서 사람들이 캐시를 지우면 localStorage 내용도 제거됩니다. 사람들은 자신의 기록과 캐시를 지울 때 중요한 데이터를 잃을 것으로 기대하지 않습니다.

localStorage의 목적을 과도하게 사용하고 있다고 생각합니다. webapps와 잘 작동하는 로컬 데이터베이스를 사용하려면 CouchDBcouchapps를 살펴 보십시오 .

그러나 비밀번호를 저장하지 마십시오.


0

javascrypt를 사용할 수 있습니다 . 사용자에게 암호화 / 암호 해독 키가 될 암호를 묻습니다

비밀번호를 저장할 필요는 없지만 사용자가 페이지를 열 때마다 비밀번호를 요청하십시오.
사용자가 원하는 경우 저장할 수 있으며 이제 의미가 있습니다.

그러나 stivlo의 의견에 합류하려면 다음과 같이하십시오.

  1. 여러 장치 액세스
  2. 지원
  3. 비밀번호를 잊으 셨나요
  4. 너무 쉬운 캐시 지우기

나는 당신이 추론의 시작을 재고해야한다고 생각합니다. 최근의 놀라운 이벤트로 인해 클라우드를 피하십시오. 빠른 결론입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.