2013-10-09 4 views
0

입력 = 숨김 필드에 대해 $ _SESSION [ 'userid'] 값과 관련된 까다로운 문제가 하나 있습니다. 문제는 누군가가 방화 녀석을 열었을 때 값의 데이터를 쉽게 변경할 수 있다는 것입니다 ... 어떻게 방지 할 수 있습니까?변경 가능한 입력 숨겨진 필드

<input type="hidden" name="id" value="ID" /> 
+3

서버 쪽 유효성 검사 및 검사 추가. 아무도 신뢰할 수없는 userland에 오신 것을 환영합니다. –

+0

그건 불가능합니다. 당신은 그것을 막을 수 없습니다. – maketest

답변

3

당신은하지, 당신은 아마 $ _POST 유효성을 검사 할 수 있습니다 할 수 있습니다 [ 'ID를'] === $ _SESSION [ '아이디'] 양식 제출 후이 올바른 값을 가지고 있는지 확인합니다.

2

클라이언트 측 (HTML, JavaScript ...)에있는 모든 항목은 이론적으로 사용자가 수정할 수 있습니다. 따라서 아이디어는 클라이언트쪽에 중요한 데이터를 두지 않거나 서버 쪽에서 적어도 두 번 확인하는 것입니다.

예를 들어, 세션 변수로 사용하고 있습니다. 왜 클라이언트 측에서 필요합니까? 이 데이터가 $ _SESSION에 이미 있으면 직접 사용할 수 있습니까? 수신 코드에서 $_POST['id]을 읽는 대신 $_SESSION['userid']을 직접 읽으시겠습니까 ??

데이터를 다시 보내야하는 경우 (이유를 설명하는 경우) 서버 측에서 현재 로그인 한 사용자 (또는 현재 세션에있는 사용자)와 일치하는 항목을 확인하십시오.

자동으로 양식을 생성 한 응용 프로그램 중 하나에서 서버 측 필드 일부를 무시하고 내 데이터베이스 또는 세션 변수에서 가져온 것이 무엇이든간에 예상 한 것으로 대체했습니다.