2012-10-25 5 views
0

cakephp 2.1을 사용하고 있으며보기, 편집 및 삭제와 같은 일부 작업을 작성했습니다. url에서는 'view/1', 'edit/1', 'delete/1'과 유사하므로 URL의 ID를 변경할 수 있습니다. URL에서 변경하고 싶지 않으며 ID를 수정할 수 없어야합니다. 제발 저를 도와주세요. 그 일은 더 잘 될 것이다.CakePHP2.1 URL에서 id를 제거하십시오.

+0

좀 더 설명해 주시겠습니까? 그래서 당신은 URL에 ID가 없길 원하십니까? URL에 ID를 넣지 않으시겠습니까? 보안 문제가 걱정 되십니까? 아니면 URL을 멋지게 보이기 만하면됩니까? –

답변

0

확인 ... 귀하의 질문을 이해한다고 생각합니다. 사람들이 URL에서 볼 수있는 것처럼 ID를 편집 할 수 있다면 보안상의 위협이 될 수 있습니다.

첫째,보기 조치 :

사용자가 특정 ID와 기록을 볼 수있는 권한이있는 경우 당신은 서버 측에 확인해야합니다. 그렇지 않은 경우 오류가 발생할 수 있습니다. URL에있는 ID를 편집했는지 여부에 상관없이 URL에있는 방법에 대해 걱정할 필요가 없습니다. 레코드를 볼 수있는 권한이 있으면 레코드를 볼 수있게하십시오.

둘째, 작업을 삭제합니다

다시 말하지만, 단지보기 작업처럼, 당신은 사용자가 레코드를 삭제할 수있는 권한이 있는지 확인하기 위해 서버 측에 확인해야합니다. 그들이 그렇다면 삭제하도록하십시오! 그들이 URL에서 ID를 편집 했는지도 걱정하지 마십시오. 사용자가 레코드를 삭제할 수있는 권한이 없으면 URL에서 ID를 편집 한 경우에도 서버 측 확인이 레코드를 삭제할 수 있습니다.

셋째, 편집 작업 :

이 약간 더 복잡하지만 여전히 아주 쉽게. HTML 양식으로 레코드를 편집하고 POST를 통해 제출한다고 가정합니다. URL의 ID가 가져오고 편집 할 레코드를 결정합니다. 보기 및 삭제와 마찬가지로 서버 쪽 검사를 수행하여 사용자가 해당 항목을 편집 할 권한이 있는지 확인해야합니다. 권한이있는 경우 양식을 반환하십시오.

일단 양식이로드되면 브라우저에 표시되는 URL은 중요하지 않습니다. 양식이 제출되는 URL과 양식이 제출하는 데이터는 중요합니다. 이제 기본적으로 편집 양식은 ID를 숨겨진 입력 필드에 저장합니다. 사용자는 해당 ID를 변경하여 편집중인 레코드를 변경할 수 있습니다.

이를 방지하려면 CakePHP의 보안 구성 요소를 사용하십시오. 당신이해야 할 일은 컴포넌트를 포함하는 것입니다. CakePHP는 폼이로드 될 때 폼에 해쉬를 자동으로 넣을 것입니다. 폼이 제출 될 때 다시 체크 할 것입니다. 사용자가 숨겨진 입력 필드를 편집 한 경우이 검사는 실패하고 CakePHP는 편집을 계속 진행할 수 없습니다.

이렇게 보안 구성 요소를 사용하려면 CakePHP의 양식 도우미를 사용하여 양식을 작성해야합니다 (아마도 이미있을 것입니다).

그리고 마지막주의 사항 ... 가끔 사람들은 ID를 데이터베이스에서 보는 사람에 대해 약간 편집증 적이기 때문에 URL이나 다른 곳에 표시하지 않으려합니다. 그러나 거의 모든 경우에 ID에는 전혀 '비밀'이 없습니다. 누가 그들을 보는 것이 중요하지 않습니다. 모든 것은 응용 프로그램과 데이터베이스가 레코드를 식별하는 수단입니다. 애플리케이션이 안전하다면 모든 ID를 전세계에 보여줄 수 있어야하며 걱정할 필요가 없습니다.

관련 문제