2011-02-11 7 views
0

사용자가 내 녹색 버튼을 클릭하면 Javascript가이를 감지하고 $ UserID 및 $ ActivityID를 서버에 전달하여 데이터베이스에 저장해야합니다.Javascript는 어떻게 사용자 정보에 안전하게 액세스 할 수 있습니까?

하지만 JS가이 정보를 안전하게 가져 와서 서버로 보내는 가장 좋은 방법은 무엇입니까? 나는 HTML에서 변수를 숨기고했습니다

HTML :

<div class="green-button">Add it</div> 
<input type="hidden" class="u" value = " <?php $UserID ?> "/> 
<input type="hidden" class="a" value = " <?php $ActivityID ?> "/> 

jQuery를 :

jQuery('.green-button').click(function(event){ 
var $UserID = jQuery(this).siblings('input').hasClass('u').attr('value'); 
var $ActivityID = jQuery(this).siblings('input').hasClass('a').attr('value'); 
// rest of the code... 

그러나,이 보안 보이지 않는다. 누군가가 파이어 버그를 사용하여 HTML을 변경 한 다음 버튼을 클릭하면 어떻게됩니까? dbase에 쓰레기가 기록되지 않습니까?

팁 주셔서 감사합니다.

+0

명확히하기

$(document).ready() { var store = []; $('input').each(function() { store.push({ this.className : this.value }); $(this).remove(); }); // now all you data save in store hash array with pairs: { class : value } $('.green-button').click(function(event){ ...send values from "store" variable... }); } 

위에서 언급 한 바와 같이, 그렇지 않은 실제 보안, 조금 절대 안전한입니다 .. $ 사용자 ID 및 $ ActivityID는 두 숫자입니다. 따라서 HTML에서 숨겨진 $ UserID를 "1"에서 "2"로 변경하면 서버 유효성 검사에서이 사실을 인식하지 못합니다. 이 사건을 어떻게 막을 수 있습니까? – JMan

답변

1

글쎄, 당신은 어떤 종류의 보안을 찾고 있는지 설명해야합니다. 네트워크를 통해 전송 된 데이터를 보호하려고하십니까? 그렇다면 SSL 인증서를 선택하여 데이터를 게시해야합니다.

그러나 데이터를 사용자가 볼 수 없도록하려면 해당 컴퓨터에서 전송 된 패킷을 읽는 사람이 어떤 데이터를 보내고 있는지 쉽게 알 수 있으므로 그렇게 할 방법이 없습니다. 위에.

+0

예 Ralph에 동의합니다. 서버에서 데이터의 유효성을 검사하고 사용자로부터 전송 된 데이터는 신뢰하지 않아야합니다. – Ankit

+0

위의 내 의견을 참조하십시오. 이 문제는 유선 통신을 통한 보안 문제가 아닙니다. 문제는 누군가가 숨겨진 $ UserID의 값을 다른 유효한 값으로 변경하고이를 서버로 다시 보낼 수 있다는 것입니다. 고마워. – JMan

+1

좋아, PHP를 사용하여 세션 변수를 사용하는 방법 중 하나는''이 값은 사용자가 쉽게 액세스 할 수 없습니다. 해당 세션 ID만이 사용자 시스템에 쿠키로 저장됩니다. – Ankit

1

서버 측 스크립트 언어를 사용하여 브라우저에서 전달되는 내용의 유효성을 검사합니다. 웹 브라우저에서 일어나는 일은 서버에 의해 신뢰되어서는 안됩니다. 따라서 user = "johnSmith"가 전달되고 activity = "save"가 확인되면 JohnSmith가 페이지를 보냈는지 확인합니다 (아마도 세션 객체에 사용자를 저장했을 것입니다). 또한 "save"가 유효한 조치인지 확인하십시오.

0

아마도 서버 검사 외에 문서로드 후 입력 값을 가져 와서 일부 자바 스크립트 개체에 저장하고 DOM에서 입력을 삭제하고 단추 클릭으로 개체에서 값 보내기를 보낼 수 있습니다.

관련 문제