Как проверить, что кто-то владеет сайтом?

10

Я пытаюсь придумать способы максимально безопасной проверки того, что пользователь владеет веб-сайтом, на который он претендует.

Вот несколько способов, которые я видел:

  • Загрузите HTML-файл с неизвестным именем в корневой каталог с заданным содержимым.
  • Включите метатег или другой комментарий где-нибудь в источнике домашней страницы
  • Отправить письмо на адрес @domainwearetryingtovalidate.tldсо ссылкой для подтверждения
  • Проверьте запись CNAME или TXT
  • Проверьте записи WHOIS
  • Подтвердите физическую информацию, позвонив по телефону или по электронной почте в службу поддержки, обновив записи вручную.

И вот проблемы с этими методами, по порядку:

  • Некоторые конфигурации сайта могут не позволять просто загрузить файл в корень
  • Плохой дизайн сайта может позволить пользователю этого сайта самостоятельно добавлять этот метатег
  • Веб-сайты, которые предоставляют услуги электронной почты, делают это бесполезным; взять gmail.comнапример
  • Это слишком сложно для большинства владельцев небольших сайтов, чтобы понять, как это сделать.
  • Те являются публичными; любой может претендовать на то, чтобы быть кем угодно. Не говоря уже о том, что чаще всего неточно.
  • Пустая трата времени

Есть ли другие способы проверить, что пользователь на вашем сайте владеет определенным сайтом? Из перечисленных мною методов, какие из них лучше и хуже? Я заказал их от лучшего к худшему по моему собственному мнению, но я хотел бы видеть то, что думают другие также.

Я планирую реализовать один или несколько из них в PHP.

циклон
источник
3
Это, безусловно, вопрос программирования. Если бы это было предназначено для веб-мастеров, я бы поставил это там.
Для автоматизированного решения вы придерживаетесь того, что перечислили. Другие крупные компании (например, Google) используют один из первых четырех вариантов. Я считаю, что это невероятно нерегулярно для пользователя, чтобы он не смог выполнить одну из первых четырех.
1
@ rlb.usa Для веб-мастеров было бы вопросом, если бы я спросил, как добавить запись CNAME в мой домен, чтобы убедиться, что я владею ею для определенной службы
2
Я думаю, что первая проблема, которую вы должны решить, это решить: что означает «владение» сайтом? Будучи администратором? Иметь доступ к файловой системе? Иметь право законного владения? Имеете обязанности по обслуживанию посредством письменного или устного соглашения? Оплачивать счета за хостинг? Оплачивать доменные счета? Платить дизайнерам?
Гонки легкости на орбите
1
@Cyclone: ​​я работаю для вас бесплатно, в силу того, что я полностью трачу свое время на то, чтобы внести свой вклад в этот вопрос.
Гонки легкости на орбите

Ответы:

9

Я определенно думаю

  • Загрузите html-файл с непонятным именем в корневой каталог с заданным содержимым

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

Если вы действительно обеспокоены этим, почему бы не разрешить все (безопасные) варианты?


По поводу вашего комментария:

Да, но с системами MVC (такими как codeigniter) может быть трудно выяснить, как получить доступ к физическому файлу, который не является частью основной системы

В этих редких случаях пусть эти администраторы идут с записями CNAME / TXT или звонят им :-)

aioobe
источник
1
Правильно .. это на самом деле, где я должен был это сделать ;-)
2
Первые два, которые я перечислил, были от инструментов веб-мастера Google
@Cyclone, я согласен с вами, что первый кажется более безопасным, чем второй.
Отвратительная вещь в том, что в результате вы получаете один непонятно названный файл на службу, загромождающий корневой каталог. Это не страшный недостаток, но есть более чистые альтернативы.
Бобби Джек
Хм .. Я думаю, что вы временно поместили скрытый файл во время процесса проверки.
aioobe
7

Загрузка файла с непонятным именем - это путь.

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

Laurent
источник
В точку. Вам не нужен «root» доступ к серверу, т.е. вне папки htmlили www.
Крис Лапланте
Я имею в виду недопустимость того, что правила перезаписи могут затруднить или усложнить загрузку файла
@Cyclone, правда, но я думаю, что довольно редко можно запретить доступ к физическому файлу HTML.
Да, но с системами MVC (такими как codeigniter) может быть трудно выяснить, как получить доступ к физическому файлу, который не является частью основной системы
Я думаю, что CI все еще разрешает доступ к физическим файлам HTML. Но на всякий случай вы также можете разрешить метод metatag, чтобы ваши пользователи не застревали в случае проблем с их файлом .htaccess или инфраструктурой MVC.
1

Я бы порекомендовал использовать метатег ...

  • Включить метатег

источник
0

Лично я бы пошел с опцией автоматической электронной почты.

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

  • Генерация случайного хэша, частично составленного из текущего времени и домена
  • Хранить хеш в базе данных
  • Отправьте пользователю электронное письмо со ссылкой для подтверждения, где параметром id является хеш
  • Теперь пользователь проверен (удалите строку из базы данных)

Для обеспечения дополнительной безопасности сохраните время создания хэша, а затем установите время ожидания через час или два.


источник