2012-11-22 2 views
1

javaScrip을 사용하여 웹 서비스를 호출하려고하지만 웹 서비스 호출에 사용자 이름과 암호가 포함되어 있으므로 사용자 이름과 암호 값을 다음과 같이 저장하려고합니다. 숨겨진 필드를 추가 한 다음 사용자 이름과 비밀번호 값을 추가하여 javaScript를 사용하여 웹 서비스 URL을 구성합니다. Incase 나는 이러한 웹 서비스 호출에 대해 https를 구현하려고합니다. 그러면 html 페이지의 숨겨진 필드로 사용자 이름과 비밀번호의 값을 안전하게 저장하겠습니까?해커가 숨겨진 필드의 값을 볼 수 있습니까?

+3

아니요! 클라이언트 측의 모든 내용은보고 싶은 모든 사람에게 표시됩니다. 서버에서 웹 서비스를 프록시 한 다음 JavaScript를 사용하여 대신 프록시에 AJAX 요청을하십시오. –

답변

6

절대적으로 그렇습니다, 해커가 숨겨진 필드의 값을 볼 수 있습니다. HTML의 숨겨진 필드는 페이지 소스를 보는 모든 사람에게 쉽게 표시됩니다.

다음은 Google 로그인 페이지의 코드입니다. 특히

<form id="gaia_loginform" 
     action="https://www.google.com/LoginAction2?service=mail" method="post" 
     onsubmit="return(gaia_onLoginSubmit());"> 
<div id="gaia_loginbox"> 
<table class="form-noindent" cellspacing="3" cellpadding="5" width="100%" border="0"> 
    <tr> 
    <td valign="top" style="text-align:center" nowrap="nowrap" 
     bgcolor="ddf8cc"> 
    <input type="hidden" name="ltmpl" 
      value="default"> 
    <input type="hidden" name="ltmplcache" 
      value="2"> 

공지 사항이 :

숨겨진는 웹 페이지에 표시되지 않습니다 의미하지만 여전히 소스에 포함되어 있습니다. 모든 사람이해야 할 일은 페이지로 이동하고 소스를보고 숨겨진 항목을 찾을 수 있습니다.

+0

그래서 다른 접근법을 설정하고 자바 스크립트를 사용하여 웹 서비스 호출로 마스터 로그인 사용자 이름과 암호를 보내고 설정할 수 있습니다. –

+0

정말 아키텍처에 따라 다릅니다. 그러나 일반적으로 서버 측에서 확인 작업을 수행하려고합니다. – PearsonArtPhoto

2

예 모든 클라이언트가 볼 수 있으며 안전하지도 않습니다. 방금 페이지 소스를보고 숨은 <input>의 값까지 볼 수 있습니다.

2

공격자가 네트워크에서 수신 대기중인 경우 안전합니다. 제대로 사용 된 HTTPS는 그가 무엇인가 유용한 것을 배울 수 없도록합니다. 사용자 이름/암호가 브라우저 사용자를 식별하는 쌍인 경우 올바른 스레드 모델입니다. 사용자 이름/암호 쌍이 사용자 (서버 운영자)를 제 3 자로 식별 한 경우 올바른 모델이 아닙니다.

사용자를 적으로 생각하면 안전하지 않습니다. 그는 단순히 브라우저에 숨겨진 필드의 값을달라고 요청하거나 SSL 연결을 감지 할 수 있습니다 (예 : javascript를 사용하거나 SSL 라이브러리를 연결하거나 SSL 라이브러리를 사용하여 키를 로그 파일로 내보내는 등). 당신은 당신이 그에게 보낸 비밀 정보에 어떤 정보도 보관할 수 없습니다.

실제로 이것은 사용자의 세션 ID를 사용하여 클라이언트를 확인하고 서버를 사용하여 외부 API에 연결해야 함을 의미합니다.

+0

나는이 모든 것을 읽는 것이 정말로 그렇지 않다는 것을 보여 주더라도 "안전합니다"라고 대답하는 것을 망설이지 만 ... – PearsonArtPhoto

관련 문제