2012-02-29 2 views
6

나는 PHP 프로젝트가 본질적으로 회사의 주문 처리 웹 사이트입니다. 회사의 각 사용자는이 웹 사이트에 액세스 할 수 있으며 전체 페이지 및 기능에 대한 액세스를 제어하는 ​​특정 자격 증명이 응용 프로그램에 제공됩니다.웹 사이트에 대한 PHP 게스트 액세스

이제 손님이 한 페이지에 액세스 할 수 있도록 허용해야합니다. 이 요청의 복잡성은 게스트가 매번 다를 수 있으며 페이지가 달라진다는 것입니다. 기본적으로이 사이트에는 라이브 주문이 없으므로 시스템 내에 계정이없는 고객이 주문 및 배송 정보에 액세스하고이를 확인할 수있는 포털입니다.

이 작업을 수행하려면 UID, MD5 해시 키 및 레코드가 참조하는 대상 페이지를 저장하는 데 사용할 게스트 관계 테이블로 데이터베이스 테이블을 설치해야합니다. 방문 카운터 및 만료 날짜도 포함됩니다. 사용자가 전자 메일을 받으면 전자 메일에 http://website.com/verify/?HASH-KEY과 같은 링크가 제공됩니다.

이 링크를 클릭하면 verify index.php 페이지가 해시를 가져와 데이터베이스에서 확인하고 응용 프로그램으로 리디렉션하지 않고이 위치의 데이터베이스에 페이지 참조를 표시합니다. 이렇게하면 웹 사이트의 구조 또는 이미 설정 한 사용자 권한 재 작업을 노출 할 필요없이 게스트가 단일 페이지에 액세스 할 수 있습니다.

  1. 적절한 방법으로이 솔루션에 접근합니까?
  2. 한 페이지의 내용을 잡고 다른 페이지에 표시하려면 어떻게합니까?
+1

바로 알 수 있습니다. 출입구 시스템이 필요합니다. 매우 구체적인 게스트를 허용하고 특정 페이지를 허용해야합니다. 손님 혼자 페이지에 혼자, 맞습니까? –

+0

당신의 합계는 대략 소리가 난다. – Jeff

+0

페이지 참조, 정확히 무엇입니까? 나는 당신의 접근 방식이 내가 말할 수있는 것에서 좋은 것이라고 말합니다. – Anton

답변

7

1. 이 솔루션을 적절한 방식으로 접근하고 있습니까?

예, 다소 차이가 있습니다.

일부 포인터 :

  • 당신이 무작위로 해시 세대의 씨앗해야합니다. 예를 들어, MD5에 고객 ID 나 기타 작은/순차 번호를 사용하지 마십시오. 악의적 인 용도로 다른 페이지를 쉽게 찾을 수 있습니다.
  • 설정된 시간 초과 후 해시 된 링크를 만료시킵니다.

2. 한 페이지의 내용을 다른 페이지에 표시하려면 어떻게합니까?

사람들이 "주문 및 배송 정보에 액세스하고 확인하려면"평소 안전한 페이지를 안전하지 않은 사람에게 전달하는 대신 해당 페이지를 만들어야합니다. 즉, 제공된 해시에 의해 입력 된 데이터에 따라 세부 정보를 채우는 '배송 확인 페이지'입니다.

+0

의미가 있습니다 ... 실제 페이지로 전달하는 대신 여러 유형의 데이터를 렌더링 할 수있는 페이지가 있고 데이터베이스의 레코드에 정보 유형이나 렌더링보기가 저장됩니다. 당신은 내 친구 논리를 말해. – Jeff

+0

내 대답보다 나은 대답. 잘 했어. –

+0

이 외에도 'HTTPS'가 필요하며 부주의로 야생에 도달 할 경우 해시 링크를 수동으로 만료 시키도록합니다. –

0

올바르게 이해하면 (내가 생각하는 것처럼),이 문제에 올바르게 접근하고 있다고 생각합니다.

다른 페이지의 내용을 포함 시키려면 일반적으로 include을 사용하십시오.

include "/path/to/page.php"; 
+0

그것은 아래쪽이고 더러운 해결책이기도합니다 ... Hamish의 반응에 대해 생각해 봅니다. 당신은 질문에 대답했지만 Hamish는 나의 필요에 더 잘 어울리는 대체 견해를 제공합니다. – Jeff

2

나는 이것을 할 수있을만큼 노력하고있다.

해시 방법을 사용해야하며 원하는 콘텐츠를 생성하는 독립 실행 형 페이지 만 있으면 시스템의 나머지 부분과 완전히 분리되어 있어야합니다. 해시 URL에 충분한 데이터를 넣어 필요한 항목을 결정하십시오.

해시 문자열 URL에 타임 스탬프를 사용하고 해시를 생성하는 임의의 비트 중에서 타임 스탬프 부분을 사용하면됩니다. 이렇게하면 URL을 본질적으로 특정 시점 이후에 "만료"시킬 수 있습니다.

예 : 당신은 현재 서버 시간이 예에서 "123456789865"을 비교하고 만료 된 경우 확인할 수 있습니다

을 url.com/in/123456789865/hash-here. 물론 유효성을 검사하기 위해 해시 암호화의 일부인 "123456789865"를 만들어야합니다.

관련 문제