2012-02-29 3 views
6

У меня есть проект PHP, по сути, сайт для обработки заказов для компании. Каждый пользователь в компании имеет доступ к этому веб-сайту и получает определенные учетные данные для приложения, которое контролирует доступ к страницам и функциям.PHP Доступ к сайту

Теперь у меня есть запрос разрешить гостевой доступ к одной странице. Сложность этого запроса заключается в том, что гость будет отличаться каждый раз, а также будет отличаться. В основном это портал, позволяющий клиентам, у которых нет учетных записей в системе, поскольку нет живого заказа на этом сайте, чтобы иметь доступ и проверить информацию о заказе и доставке.

Моей целью является создание таблицы базы данных в качестве таблицы отношений guest, которая будет использоваться для хранения UID, MD5 Hash Keys и целевой страницы, на которую ссылается запись. Также будет включен счетчик посещений и срок действия. Когда пользователь получит электронное письмо, у них будет ссылка, содержащаяся в письме, где-то вроде http://website.com/verify/?HASH-KEY.

При нажатии этой ссылки я ожидаю, что страница index.php проверяет значение HASH, проверяет его в базе данных и отображает ссылку на страницу в базе данных в этом месте вместо перенаправления в приложение. Это позволит гостевому доступу к отдельной странице без необходимости раскрывать структуру веб-сайта или доработать уже установленную авторизацию пользователя.

  1. Я подхожу к этому решению надлежащим образом?
  2. Как захватить содержимое одной страницы и отобразить ее в другом?
+1

Позвольте мне понять, что вам нужна какая-то система дверных проемов, чтобы позволить очень конкретному гостю на очень конкретной странице, и что гость один на странице один, правильно? –

+0

Ваше суммирование звучит правильно. – Jeff

+0

Ссылка на страницу, что это такое? Я бы сказал, что ваш подход является хорошим из того, что я могу сказать. – Anton

ответ

7

1. Подхожу ли я к этому решению надлежащим образом?

Да, более или менее.

Некоторые указатели:

  • Убедитесь, что вы семя хэш поколения случайным образом. Например, НЕ просто MD5 идентификатор клиента или какой-либо другой небольшой/последовательный номер, так как это облегчило бы злоумышленное использование для поиска других страниц.
  • Истекает через хешированные ссылки после установленного тайм-аута.

2. Как захватить содержимое одной страницы и отобразить ее в другом?

Если вы хотите, чтобы люди «получали доступ и проверяли информацию о заказе и доставке», вы, вероятно, должны создать страницу специально для нее, вместо того чтобы пытаться проходить через безопасные страницы для незащищенных гостей. То есть, «страница подтверждения доставки», которая заполняет данные в соответствии с данными, введенными с помощью поставляемого хэша.

+0

Это имеет смысл ... поэтому вместо того, чтобы передавать их на фактическую страницу, есть страница, которая может отображать несколько типов данных, а запись в базе данных хранит тип информации или визуализацию. Вы говорите логику, мой друг. – Jeff

+0

Лучший ответ, чем мой. Отлично сработано. –

+0

В дополнение к этому требуется «HTTPS», и пусть пользователь вручную истекает хеш-ссылку, если он непреднамеренно достигает дикой природы. –

0

Если я правильно вас понимаю (и я думаю, что знаю), то я думаю, что вы правильно это подходите.

Чтобы добавить содержимое другой страницы, вы обычно используете include.

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

Это тоже плохое решение ... Я подумаю об этом, услышав ответ Хэмиши. Вы ответили на этот вопрос, но Хэмиш предоставил альтернативное представление, которое может быть лучше для моих нужд. – Jeff

2

Я стараюсь следовать этому, а также могу.

Кажется, вы должны использовать свой хеш-метод и просто иметь отдельную страницу, которая будет генерировать контент, который вы хотите, полностью отделен от остальной части системы. Просто поставьте достаточно данных в свой хэш-URL, чтобы определить, что нужно.

Что-то еще нужно сделать, чтобы использовать временную метку в URL-адресе хэш-строки и иметь эту временную часть случайных битов, которые вы генерируете хэш. Это позволит вам сделать URL по существу «истекающим» после определенного момента.

Пример: url.com/in/123456789865/hash-here

Вы можете сравнить «123456789865» в данном примере к текущему времени сервера и если его истекли определить. Конечно, вам нужно сделать часть вашего хэш-шифрования «123456789865», чтобы все еще подтвердить

Смежные вопросы