2014-05-12 9 views
0

내 사용자가 inspect 요소를 사용하여 ('+ res.id +') 및 ('+ res.level')을 변경할 수 없도록하고 싶습니다. 제출 버튼.보안 html 양식 변수

예를 들어 '+ res.id +'는 = 2이고 firedragon과 동일하지만 inspect 요소를 사용하는 사람은 2를 1로 변경하고 1은 번개 동등한 값으로 변경할 수 있습니다. 그런 다음 전투를 클릭하면 firedragon이 lightning dragon으로 변경되었습니다. 기본적으로 그들은 원하는 사람이든간에 누구와도 싸울 수 있습니다.

사람들이 변수를 변경하지 못하게하거나 변수가 변경되어 사용자에게 오류 메시지를 보낼 수 있는지 확인하는 방법이 있습니까?

   html += '<form name="input" action="ingame.php?page=attack/travel/startbattle" enctype="multipart/form-data" method="post">'; 
       html += '<input type="hidden" id="goid" name="goid" value="'+res.id+'">'; 
       html += '<input type="hidden" id="level" name="level" value="'+res.level+'">'; 
       html += ' <input type="submit" value="Battle!" class="button"/>'; 
       html += '</form>'; 
+0

세션 또는 이와 비슷한 내용으로 서버 측에서 확인하는 것이 좋습니다. 특정 사용자에 대해 임의로 생성 된 고유 해시 – rsz

답변

0

사용자가 양식 매개 변수에 원하는 매개 변수를 제출하지 못하게 할 수 없습니다. 양식 값이 어떻게 변경 되더라도 누군가가 curl 등을 사용하여 사용자 지정 요청을 서버에 보낼 수 있습니다.

입력 값에 대한 서버 측 유효성 검사가 필요합니다. 양식을 제출할 때 검색 할 수있는 중간 객체를 저장해야 할 수도 있습니다. 그런 다음이 값을 숨겨진 필드로 가져올 필요가 없습니다.

2

신뢰할 수있는 변수를 저장하려면 클라이언트에 보내지 말고 대신 세션 상태, 데이터베이스 또는 요청간에 지속되는 다른 백업 저장소를 사용하여 서버 메모리에만 저장하십시오.

클라이언트와 값을 공유해야하는 경우 해당 값을 보내지만 사용자의 입력으로 허용하지 마십시오.

세 번째 옵션으로 당신이 완전히 비 저장 서버가 클라이언트에 값을 표시해야하는 경우, 당신은 암호화 할 수 있습니다 및/또는이 클라이언트에서 반환 할 때 당신이 있는지 확인 할 수 있도록 값을 서명 그들은 훼손되지 않았다. 메시지 인증 코드를 사용하면 다음과 같은 접근 방식을 구현할 수 있습니다. http://en.wikipedia.org/wiki/Message_authentication_code