2009-10-29 1 views
1

저는 작가 경영 회사를위한 사이트를 만들고 있습니다. 이들은 종종 미래의 자발적인 작가로부터 대본을 여러 번 제출합니다. 새로운 사이트는 장래 작가가 자신의 아이디어에 대한 짧은 로그 라인/샘플을 제출할 수있게 해줍니다. 이 아이디어는 관리 그룹의 이메일 계정으로 전송됩니다. 관리 그룹이보고 싶은 것을 좋아하는 경우 전자 메일 내에서 해당 제출을 승인하고 전체 스크립트를 업로드하기 위해 제출자에게 고유 한 링크를 전달할 수 있기를 원합니다. 이 링크는 의도 한 수신자 만 사용할 수 있도록 한 번만 또는 일정 시간 동안 만 작동합니다.일회용 링크를 생성하는 방법은 무엇입니까? 모든 CMS 또는 프레임 워크 솔루션?

그래서, 어떤 사람이 (나는 PHP + MySQL을 가정하고있어) CMS 또는 프레임 워크가 이것을 수행 할 수있는 방향으로 나를 가리킬 수 있습니까? 나는 많은 것을 수색했지만,이 쿼리를 검색 엔진에 사용하는 올바른 방법을 알아낼 수는 없습니다.

나는 적당한 프로그래밍 경험을 가지고 있지만, 간단한 Wordpress hacks 외에는 PHP가별로 없습니다.

감사합니다.

+0

한 번만 작업하면 안 좋은 생각입니다. 클라이언트가 문서를 업로드하는 중 어떤 종류의 오류가 발생하면 그들은 망쳐 버리고 다시 프로세스를 진행해야합니다. 시간 제한 창이 더 좋으며 성공적인 업로드 후에 만 ​​링크가 작동하지 않게하는 여러 단계의 프로세스가 필요합니다. – Jherico

답변

1

이러한 시스템을 구축하는 간단한 방법에 대한 일반 지침을 제공 할 것입니다.

글쓴이 어떻게 든 시스템에 등록되어 있고 그/그녀의 프로필에 유효한 메일 주소가 있다고 가정합니다.

따라서 샘플을 제출할 때 "샘플"테이블에 항목을 만듭니다. 그런 다음 샘플과 링크가있는 관리자에게 메일을 보냅니다. 이 링크는 매개 변수로 샘플의 데이터베이스 "id"를 제공하는 스크립트를 가리 킵니다 (이 스크립트는 관리자가 로그온했는지 확인해야합니다. 그렇지 않은 경우 로그인 화면을 표시하고 로그인 성공 후 다시 리디렉션합니다).

이 스크립트는 작성자가 자신의 작업을 제출할 수 있도록 관리자의 의도를 알고 있습니다. 이제 재미가 시작됩니다.

은 많은 가능성이있다 : 당신은 적절한 "SubmitAuthorizations"에 항목을 만들 수 있습니다

  1. 라이터의 ID와이 권한이 부여 된 날짜를 포함하는 DB 테이블 (즉, 일 때 행 귀하의 DB에 추가되었습니다). 그런 다음 "upload.php? id = 42"와 같은 링크를 사용하여 작성자에게 메일을 보내면됩니다. 여기서 id는 인증 ID입니다. 이 스크립트는 기록 된 사용자가 올바른 작성자인지, 그리고 그가 허용 된 시간 범위 내에 있는지 (저장된 "인증 날짜"와 현재 날짜를 비교하여) 확인합니다.

  2. 내가 선호하는 것은 다음과 같습니다. 사소한 일을 처리하기위한 특수 테이블이 없기 때문에 (권한 부여를 "편집"하거나 "취소"하고 싶지는 않지만 "만료"할 수 있습니다) . 키 인증이 부여 된 날짜와 인증, 같은 : "upload.php로 authDate = 20091030 & 키 = 87a62d726ef7 ...?"

당신은 단순히 단순히 작가에게이 매개 변수에 대한 링크를 제공

어떻게 작동하는지 설명하겠습니다.

스크립트는 먼저 Writer가 로그온했는지 확인합니다 (그렇지 않은 경우 로그인 성공 후 리디렉션을 통해 로그인 페이지를 표시합니다).

이제 요청을 확인해야합니다. 즉, 위조 된 링크가 아닌지 확인하십시오. 이 작업을 수행하는 방법? 이 인증 키를 구성하는 "똑똑한"방법 일뿐입니다.

당신은 같은 것을 수행 할 수 있습니다

key = hash(concat(userId, ";", authDate, ";", seed)); 

글쎄, 여기 해시() 우리가 등 MD5, SHA1, 그리고 CONCAT (처럼 "단방향 기능에게"라고 부릅니다) 단순히 문자열 연결 함수입니다. 마지막으로 시드은 완전히 무작위이며 변경되지 않습니다 (변경된 경우 발급 된 모든 링크가 작동을 멈 춥니 다) 보안을 강화하기 위해 해커가 MD5를 올바르게 사용하고 있다고 가정 해 봅시다 (쉬운) 그는 사용자 이름과 날짜의 일부 조합을 해싱하여 시스템을 해킹하려고 시도합니다.

요청이 유효하려면 정확한 시간 프레임이어야합니다.

키가 유효하고 날짜가 시간 프레임 내에있는 경우 업로드를 수락 할 수 있습니다.

  • 이는 매우 간단한 시스템이지만, 정확하게 당신이 필요로 할 수 있습니다

    노트 할 몇 가지.

  • 해시 함수로 MD5를 사용하지 말고 대신 SHA1과 같은 것을 사용하십시오.
  • Writer로 전송되는 링크의 경우 매개 변수 이름을 "난독 화"할 수 있습니다. 즉, "키"에 대해 "k"를, "authDate"에 대해 "d"를 호출 할 수 있습니다.
  • 날짜에 대해 유닉스 시대와 같이 다른 형식을 선택할 수 있습니다.
  • 마지막으로 추측하기 더 어려워지기 위해 매개 변수를 "base64"와 같은 것으로 인코딩 할 수 있습니다 (또는 예를 들어 rot13과 같은 일부 문자 교체 기능을 적용하지만 숫자도 고려해야합니다)
  • 완전성을 위해 검증 스크립트에서 Writer가 이미 시간 프레임에서 파일을 보낸 것인지 확인할 수 있으므로 시간 프레임 내에서 많은 파일을 보낼 수 없습니다.

저는 최근 완전히 다른 용도로 두 회사에서이 두 가지를 구현했습니다. 아이디어를 얻은 후에는 extremelly을 구현하는 것이 간단합니다. 전체 키 생성 및 유효성 검사 프로세스에 대해 10 줄 미만일 수 있습니다.

그들 중 하나에서 라이터와 동일한 에이전트는 시스템에 아무런 설명도하지 않았습니다. 실제로 시스템에 그의 "프로파일"만 있었고 다른 누군가가 관리했습니다. . 이 경우 "업로드"스크립트의 매개 변수에도 "Writer"의 ID를 포함시켜야합니다.

이 정보가 도움이 되었으면 좋겠다. 시간을 찾으면 몇 가지 언어로 된 실용 예제로 블로그를 작성하겠습니다.

+0

그것은 큰 Bruno이었다! 매우 유익한, 정말 고마워요! 그냥 당신의 블로그에 가입했습니다 :) 다시 한번 감사드립니다. –

관련 문제