Firemonkey를 사용하여 Android 앱을 개발 중입니다. 이 응용 프로그램은 Rest를 사용하여 json 결과를 반환하는 WebApi에 요청합니다. API는 이미 개발되었으며 각 요청은 사용자와 암호를 querystring으로 보내 데이터를 반환해야합니다. 내 질문은 : 무엇 firemonkey (안드로이드)에 민감한 데이터를 저장하는 가장 좋은 방법입니다. 물론 이러한 데이터를 저장하기 위해 암호화를 사용하는 것이 가장 먼저 염두에 두지 만, firemonkey에 대한 기본 및 보안 기능이 있습니까?민감한 데이터를 firemonkey에 비밀번호로 저장하는 방법은 무엇입니까?
답변
암호를 암호화하지 마십시오. 침입자가 DB를 얻으면 암호 키도 받게됩니다.
단지 해시 함수를 사용하는 것만으로는 충분하지 않으며 단지 소금을 추가하면 보안을 향상시키는 데별로 도움이되지 않습니다.
대신 약 100ms 동안 무작위 소금으로 HMAC를 반복하고 해시로 소금을 저장하십시오. PBKDF2
, password_hash
, Bcrypt
및 이와 유사한 기능과 같은 기능을 사용하십시오. 요점은 공격자가 무차별 적으로 암호를 찾는 데 많은 시간을 소비하게하는 것입니다.
@Zafe 장치에 액세스 토큰 저장? – Marcoscdoni
그래,하지만 질문 당 OP는 그러한 보안되지 않은 방식으로 자격 증명을 원하는 웹 서비스를 제어하지 못합니다. –
@FreeConsulting 그러면 OP에는 델리마가 있습니다. 사용자를 위험에 빠뜨리거나 푸시 백하고 기여를 거부합니다. 우리는 안전하지 않은 제품 생산을 중단해야합니다. 사용자를 위험에 빠뜨리는 안전하지 않은 사이트를 만드는 데 기여할 것을 제안합니까? – zaph
저장하지 마세요. 실제로 보안이 필요할 경우 필요에 따라 서버에 요청하십시오. 키와 데이터가 동일한 시스템에 저장되는 경우 보안 암호화와 같은 것은 없습니다.
질문은 서버에서 요청할 수없는 * 사용자의 * 비밀번호를 저장하는 방법을 묻는 것입니다. 그리고 "저장하지 마십시오"는 여전히 유효한 대답이지만, 매우 유용한 * 답변처럼 보이지 않습니다. 많은 앱이 로그인 정보를 기억하여 사용자가 시작할 때마다 인증하지 않아도되는 것을 방지합니다.이 질문은 단순히 어떻게해야하는지 묻는 것입니다. –
@RobKennedy 생성 된 액세스 토큰을 사용합니다. 10 년이 넘도록 해결 된 문제였습니다. 클라이언트에 암호를 저장하거나 암호화하지 마십시오. –
그 대답을 쓰십시오. –
는 암호화 그러나 아마 서버에서 결국 로그 파일됩니다 HTTPS 연결로, 그것은 분명히에 HTTP 연결과 쿼리 문자열에 사용자의 암호를 보내지 마십시오 meerystring의 평범한 텍스트는 안드로이드의 내부 저장소보다 손상 될 가능성이 훨씬 큽니다. –