HTML 속성에 데이터베이스에서 추출한 데이터의 행 ID를 저장하는 많은 웹 사이트 (SO 및 내 웹 사이트 포함)를 보았습니다. 클라이언트 쪽에서 사용자가 편집 할 수 있으며 서버 측에 데이터를 업데이트하도록 보낼 수 있음을 알고 있습니다. 예를 들어이 쿼리를 가지고 기억, 그것은 upvoting 코멘트입니다 :데이터 업데이트 안전 유지
<td data-commentid="<?php echo $row['comment_id']; ?>"><?php echo $row['comment']; ?></td>
출력 :
<td data-commentid="1">+1, beat me to it.</td>
<td data-commentid="2">Damn! What is this?</td>
...
SELECT comment_id, comment FROM comments
이 정상적인 사람이이 같은 인쇄를 할 것입니다
일부 해커 유형의 사용자에게 표시 될 때, 그는 다음과 같은 형식으로 commentid를 편집하려고합니다. 어떤 방법이 있나요
: (250)와 버튼을 upvote에 클릭하고 우리의 죄 스크립트는 그것을 받아 들일 것이고,이 ID를 1 또는 2
질문과 의견에 대한 시각적 있었지만 ID (250)와 다른 의견을 upvote에합니다 이걸 없애기 위해? 콘솔을 켜고 중요한 정보를 주석으로 변경하기 위해 속성 참조를 변경할 때 DB를 업데이트 된 속성의 ID로 업데이트하는 것처럼 보일 수도 있습니다.
인증? 사용자가 # 250 댓글을 게시하지 않은 경우 사용자는 수정하기 위해 서버 측에서 액세스하지 않아야합니다. – ceejayoz
누군가가 클라이언트 측 도구를 사용하여 자신의 컴퓨터에있는 브라우저에 저장된 데이터를 조작하지 못하게 할 수 없습니다. 와일드 와일드 웹 (Wild Wild Web)입니다. 클라이언트에서 오는 어떤 것도 신뢰하지 않습니다. 댓글 # 250을 upvoted하는 것을 원하지 않으면 댓글 # 250을 upvotable해야하는 페이지에 사용자가없는 경우 upvotes를 허용하지 마십시오. –
사용자가 선택할 수있는 방법은 주석 키에 GUID 또는 기타 증분이 아닌 데이터 유형을 사용하거나 제출 된 값에 보안 검사를 구현하는 것입니다. 이는 익명 사용자에게는 불가능할 수 있습니다. – Grax