Проверить достоверность источника данных. PHP
От: warobushek  
Дата: 15.12.10 06:46
Оценка:
Здравствуйте.
На одном сервере — форум, на другом — сайт.
Нужно сделать так, чтобы пользователь, нажимающий на ссылку именно на том сайте, автоматически регистрировался на форуме.

Я так понимаю, на том сайте можно сделать ссылку вида
http://forum/register.php?ref=12345
где 12345 — некоторый особый код для регистрации.
При нажатии на нее на том сайте писать в куки определенные данные.

На форуме проверять $_GET['ref'], $_COOKIE и $_SERVER['HTTP_REFERER']
Но как быть уверенным в том , что пользователь пришел именно с того сайта? (ведь $_SERVER['HTTP_REFERER'] можно подделать при желании).
Re: Проверить достоверность источника данных. PHP
От: warobushek  
Дата: 15.12.10 07:02
Оценка:
если сделать
так:
передаются данные+некоторый хеш

Этот "некоторый хеш" делается так md5(данные.секретный_ключ).
На форуме проверяем то же самое — если совпадает, то регистрируем.
Это нормально?
Re: Проверить достоверность источника данных. PHP
От: маген Россия https://ru.linkedin.com/pub/alexey-smorkalov/4/283/8b8
Дата: 15.12.10 07:06
Оценка:
W>Но как быть уверенным в том , что пользователь пришел именно с того сайта? (ведь $_SERVER['HTTP_REFERER'] можно подделать при желании).

Может сделать так, чтоб форум при получении такого запроса на регистрацию лез на "сайт" и проверял что да — такой клиент и правда сейчас кликал.
Re[2]: Проверить достоверность источника данных. PHP
От: warobushek  
Дата: 15.12.10 07:58
Оценка:
А как он должен лезть на сайт?
Re[3]: Проверить достоверность источника данных. PHP
От: маген Россия https://ru.linkedin.com/pub/alexey-smorkalov/4/283/8b8
Дата: 15.12.10 08:02
Оценка:
Здравствуйте, warobushek, Вы писали:

W>А как он должен лезть на сайт?


По HTTP GET наверное
Re[4]: Проверить достоверность источника данных. PHP
От: warobushek  
Дата: 15.12.10 08:10
Оценка:
Здравствуйте, маген, Вы писали:

М>Здравствуйте, warobushek, Вы писали:


W>>А как он должен лезть на сайт?


М>По HTTP GET наверное


Можно поподробнее?
Re[5]: Проверить достоверность источника данных. PHP
От: маген Россия https://ru.linkedin.com/pub/alexey-smorkalov/4/283/8b8
Дата: 15.12.10 08:18
Оценка:
М>>По HTTP GET наверное

W>Можно поподробнее?


Если хостинг поддерживает HTTP экстеншн
http://www.php.net/manual/en/function.http-get.php

Если нет, то через сокеты
http://king-dom.ru/php/fsockopen.html

Общая инфа
http://www.codenet.ru/webmast/php/HTTP-POST.php
Re[6]: Проверить достоверность источника данных. PHP
От: warobushek  
Дата: 15.12.10 08:43
Оценка:
Что Вы предлагаете делать GET-запросом?
Как с помощью него проверить что пользователь нажимал ссылку.
Насколько я понимаю, Вы предлагаете при нажатии на ссылку сохранять признак того что пользователь ее нажал либо в базе либо где-то еще. А потом с помощью GET запроса обращаться к какому-нибудь php-скрипту на этом сайте, который уже проверяет в базе — нажимал пользователь ссылку или нет.
Re[7]: Проверить достоверность источника данных. PHP
От: маген Россия https://ru.linkedin.com/pub/alexey-smorkalov/4/283/8b8
Дата: 15.12.10 09:37
Оценка:
W>Насколько я понимаю, Вы предлагаете при нажатии на ссылку сохранять признак того что пользователь ее нажал либо в базе либо где-то еще. А потом с помощью GET запроса обращаться к какому-нибудь php-скрипту на этом сайте, который уже проверяет в базе — нажимал пользователь ссылку или нет.

Да, сохранять в базе. Все верно.

Как вариант, можно сделать с точностью до наоборот и без базы на "сайте" — юзер щелкает ссылку на "сайте",
а "сайт" через сокеты по протоколу HTTP POST отправляет данные на "форум", тем самым регистрируя пользователя.
Поскольку запрос будет с "сайта", а не с клиента, проверить подлинность вроде проблем не составляет по IP?

Хотя, если вообще делать строго "по уму", то "сайт" отправляет вместе с данными свой SSL сертификат, а "форум" его проверяет.
Теоретически такое вроде можно на php сделать, на практике же не пробовал.
Re[8]: Проверить достоверность источника данных. PHP
От: warobushek  
Дата: 15.12.10 11:33
Оценка:
Здравствуйте, маген, Вы писали:

М>Поскольку запрос будет с "сайта", а не с клиента, проверить подлинность вроде проблем не составляет по IP?


так эти данные (в том числе) и IP можно подделать при обращении к сайту?
Re[8]: Проверить достоверность источника данных. PHP
От: warobushek  
Дата: 15.12.10 11:49
Оценка:
Здравствуйте, маген, Вы писали:

М>Поскольку запрос будет с "сайта", а не с клиента, проверить подлинность вроде проблем не составляет по IP?


Но в случае обычного HTTP-запроса, можно ведь подделать всю эту информацию. Так ведь?
Re[9]: Проверить достоверность источника данных. PHP
От: маген Россия https://ru.linkedin.com/pub/alexey-smorkalov/4/283/8b8
Дата: 15.12.10 13:05
Оценка:
М>>Поскольку запрос будет с "сайта", а не с клиента, проверить подлинность вроде проблем не составляет по IP?

W>так эти данные (в том числе) и IP можно подделать при обращении к сайту?


Стоп. Как это — подделать IP в данном контексте, т.е. чтобы "форум" подумал что запрос идет с "сайта"?
Не понимаю о чем речь.
Re[10]: Проверить достоверность источника данных. PHP
От: warobushek  
Дата: 16.12.10 04:11
Оценка:
Здравствуйте, маген, Вы писали:

М>Стоп. Как это — подделать IP в данном контексте, т.е. чтобы "форум" подумал что запрос идет с "сайта"?

М>Не понимаю о чем речь.

Ну да, разве это невозможно?

А как Вам вот такой способ:
на том сайте пользователь получает одноразовую ссылку
forum.ru/register.php?d=данные+дата&h=хеш
где хеш=md5(данные+дата.секретное_слово)

на форуме проверяем этот хеш.
Re[11]: Проверить достоверность источника данных. PHP
От: маген Россия https://ru.linkedin.com/pub/alexey-smorkalov/4/283/8b8
Дата: 16.12.10 08:40
Оценка:
Здравствуйте, warobushek, Вы писали:

W>Здравствуйте, маген, Вы писали:


М>>Стоп. Как это — подделать IP в данном контексте, т.е. чтобы "форум" подумал что запрос идет с "сайта"?

М>>Не понимаю о чем речь.

W>Ну да, разве это невозможно?


Теоретически возможно (ip spoofing?), но это совсем другой уровень взлома,
вобщем не та ситуация по-моему, чтоб его рассматривать.

W>А как Вам вот такой способ:

W>на том сайте пользователь получает одноразовую ссылку
W>forum.ru/register.php?d=данные+дата&h=хеш
W>где хеш=md5(данные+дата.секретное_слово)

W>на форуме проверяем этот хеш.


Вобщем-то вполне нормально, по-моему.
Re[9]: Проверить достоверность источника данных. PHP
От: Mamut Швеция http://dmitriid.com
Дата: 16.12.10 12:41
Оценка:
М>>Поскольку запрос будет с "сайта", а не с клиента, проверить подлинность вроде проблем не составляет по IP?

W>Но в случае обычного HTTP-запроса, можно ведь подделать всю эту информацию. Так ведь?


ты делаешь этот запрос curl'ом с собственного сервера.


dmitriid.comGitHubLinkedIn
Re[12]: Проверить достоверность источника данных. PHP
От: warobushek  
Дата: 17.12.10 12:27
Оценка:
Здравствуйте, маген, Вы писали:

спасибо за помощь в поиске истины ))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.