2012-05-10 2 views
0

저는 PHP 웹 응용 프로그램을 개발하고 있습니다.업데이트 용 웹 응용 프로그램 양식의 기본 키 값 유지

검색된 키를 사용하여 동일한 레코드를 참조하여 관련 레코드를 업데이트 할 수 있도록 개체를 검색 할 때 개체의 기본 키 값을 웹 양식에 저장하는 방법에 대해 궁금한 점이 있습니까?

예 : pk_id = 10의 직원 레코드를 검색합니다. 사용자가 객체를 변경하면 pk_id 객체를 업데이트해야합니다. 10. 따라서 pk_id를 양식에 저장해야합니다.

숨겨진 입력 필드에 값을 저장하려고 생각했습니다. 이것은 문제가 될 것입니다.

어떻게 전문가가이 작업을 수행합니까?

RGDS Rifky

+0

다른 방법으로는 큰 문제가 아닙니다. 숨겨진 필드 – YamahaSY

답변

1

@marvin (즉 클라이언트 측)과 세션 내에서 식별되는 두 가지 방법이 있습니다.

클라이언트 측 식별을 사용하는 경우 매우 조심하십시오. 귀하의 예에서, 누군가가 자신의 기본 키를 알고 있다면 그들의 봉급을 백만 달러로 설정하는 것이 쉽다. @ Thomas Hudspith-Tatham은 이것이 가능하지 않다고 말합니다 - 특히 대중이 마주하는 웹 사이트에 대해서는 동의하지 않습니다. interwebs의 초기에는 응용 프로그램이 페이지간에 데이터를 전송하기 위해 클라이언트 측 메커니즘을 사용했기 때문에 전자 상거래 상점이 고급 제품 주문을 0.01 달러로 수주해야하는 몇 가지 사례가있었습니다.

덧붙여 말하자면 데이터를 수정할 때 GET 대신 POST를 사용하는 것이 좋습니다. 따라서 숨겨진 필드는 URL 매개 변수보다 스타일 상 더 낫습니다.

세션 사용은 약간의 고통입니다.로드 균형 조정과 쿠키 만료에 대해 걱정할 필요가 있지만 공격자가 변경할 필요가없는 데이터는 변경하기가 훨씬 어렵습니다.

-1

예. 당신 말이 맞아요. 숨겨진 필드에 기본 키 ID를 저장하는 것이 좋습니다. 원하는 경우 URL에서 동일한 항목을 전달할 수도 있습니다.

+0

-1에 GET 매개 변수를 넣지 않으려면 세션에 pk_id를 저장할 수 있습니다. 꽤 바람직하지 않은 상황을 초래할 수 있습니다. – itachi

+0

나는 그 바람직하지 않은 상황을 인식하지 못한다. 나는 이것에 초보적이다. 어떤 바람직하지 않은 상황에 대해 이야기하고 있는지 설명해 주시겠습니까? – piyush

+0

누군가가 실수로 URL을 변경하거나 이전 URL을 사용할 수 있습니다. 당신은 사용자에게 많은 통제권을 부여하고 있으며 매우 악의적으로 행동 할 수도 있습니다. –

1

세 가지 방법 (매개 변수를 가져옵니다) :

  • 사용 hidden input, 즉 그들이 무엇이다.

  • 당신은 업데이트 URL의 GET 필드에 ID를 수행 할 수 있습니다. (같은
    update.php?pk_id=17) 그래서 당신은 자체에 양식을 게시 할 때, 당신은 여전히 ​​ 이 ID를 얻을 수 있습니다.

  • ID를 숨기려면 세션에 저장할 수 있습니다.

2

숨겨진 입력 필드가 좋으며 좋은 해결책입니다.

세션에 저장하는 것도 옵션이지만 이미 세션을 많이 사용하고 있다면 숨겨진 입력을 사용할 수도 있지만 세션은 거의 가장 안전한 옵션입니다.

한 가지 가능한 문제는 누군가 양식을 제출하기 전에 HTML 양식의 숨겨진 입력 값을 변경할 수 있다는 것입니다. 그래도 그럴 가능성은 희박합니다.