1

데이터베이스에 저장하기 전에 암호를 해싱하기 위해 PHP 5.5+ password_hash() 함수를 사용하고 있습니다. 여태까지는 그런대로 잘됐다.제출하기 전에 사전 해싱이 필요한 Password_hash()가 필요합니까?

내가 조금 불확실한 점은 양식에서 PHP 스크립트로 보낸 비밀번호를 사전 해싱해야한다는 것입니다. >

  • 컨트롤러 스크립트 -

    양식을 포함
  • HTML 파일 양식 방법에 컨트롤러 스크립트를 호출
      = ".."

      이제 폼이 절차를 제출는 다음과 같이 수행 (짧은면에서)입니다 호출을 수신하고 올바른 함수를 선택합니다 ->
    1. 데이터베이스에 대한 함수 실행 및 저장.

    기본적으로 호출은 저장에서 저장까지 세 파일을 통해 전송됩니다.

    나는 해킹이 세 번째이자 마지막 파일에서 수행되었으므로 데이터가 도용되어 일반보기로 볼 수 있다고 생각하고 있습니다.

    초기 양식 제출 중에 일부 JavaScript로 암호를 해시해야하는지, 아니면 안전합니까? 최종 사이트는 SSL 인증서를 사용할 가능성이 높지만 안전한 지 여부는 아직 확실하지 않습니다. 컨트롤러 사이의 암호를 하이재킹에 대한

  • +2

    당신이 해시 경우 브라우저에서 웹 서버로 암호를 보내고 서버에서 다시 해시하면 결국 저장되는 암호는 거의 약화됩니다. 초기 해시는 암호의 엔트로피를 줄여줍니다. SSL을 통해 전송하는 경우 브라우저와 웹 서버 간의 보안이 SSL에 의해 처리되므로 브라우저에서 해시 할 필요가 없습니다. –

    +0

    모든 PHP 스크립트가에서 실행됩니다. 하나의 인터프리터 인스턴스. non-issue는 대부분 PHP가/POST 데이터 형식을 읽는 방법입니다. attachemen 파일이있는 경우 임시 파일이 생성됩니다 (대부분의 로그인 양식에서는 가능하지 않습니다). 아마도 HTTP를 통해 전송되는 해킹되지 않은 비밀번호를 묻는 중입니까? 그것은 TLS마다 해결할 수 있습니다. – mario

    +0

    저는 오늘 제가 가진 해결책을 가지고 최선을 다할 것을 바랍니다. 시간 내 주셔서 감사합니다. – Markus

    답변

    2

    귀하의 우려는 불필요하다 : 그것은 공격자가 PHP 프로세스의 메모리를 읽을 수 있어야 의미 다른 컨트롤러 사이를 통과하는 동안에 공격자

    암호를 납치, 루트 권한이 필요합니다. 공격자가 루트 권한을 가지고 있다면 더 큰 문제가 생기며 솔루션은 사용자를 저장하지 않을 것입니다. 동일한 공격자가 PHP 파일을 수정하여 "보호"를 제거 할 수 있기 때문입니다.

    패스워드가 인터넷을 통해 날아가는 동안 패스워드를 가로채는 방법은 HTTPS를 사용하는 것뿐입니다. HTTPS를 사용하는 것입니다. 도청자가 전송 중일 때 페이지를 변경할 수 있기 때문에 무의미한 것입니다. 당신이 추가 한 추가 "보안"없이 수정 된 버전. Security.SE에 HTTPS없이 로그인 폼을 확보하기 위해 노력에 대해 많은 질문을 확인,이 있습니다 :

    +0

    질문은 암호가 게시 될 때의 첫 번째 단계입니다. SSL을 사용하지 않는 한 일반 텍스트입니다. –

    +1

    @ kasperTaeymans - 비밀번호가 SSL 연결을 통해 웹 서버로 전송 된 경우 일반 텍스트로 전송되지 않습니다. –

    +0

    SSL을 사용할 필요가 없다는 의미는 아닙니다. 이 대답에 나의 코멘트는 나의 downvote를 지원하기위한 것이었다. –