#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
Я хотел бы надежно сохранить учетные данные пользователя на связанных веб-сайтах и автоматически регистрировать их на этих сайтах при входе на наш. Я понимаю, что это имеет некоторые последствия для безопасности, поэтому я хотел бы получить отзывы других и посмотреть, что было успешным для других в прошлом.
Какую технику вы использовали для автоматического входа пользователей? Я бы предпочел не дублировать HTML-форму и отправлять ее через javascript. Это кажется подверженным ошибкам, если форма когда-либо меняется. Я попытался поместить форму входа в iframe, но, похоже, владельцы сайта могут заблокировать это (см. Прикрепленный Скриншот). Вы знаете, как они это делают?
Во-вторых, каков был ваш подход к сохранению учетных данных, чтобы они были «безопасными».
…Питер
Комментарии:
1. Почему вы хотите это сделать, из любопытства?
2. @MaxPM У наших пользователей есть много платных веб-сайтов, связанных с бизнесом, на которые им нужно войти (не только twitter). В рамках проекта они попросили нас создать единый вход для бедных, чтобы им не приходилось постоянно входить в них. Мы понимаем, что это связано с безопасностью и обслуживанием… мы хотели бы посмотреть, как другие подошли к проблеме
Ответ №1:
Я бы предложил использовать файлы cookie для сохранения сертификата сеанса на компьютере пользователя. Хорошим значением для такого файла cookie было бы;
идентификатор пользователя, временная метка, хэш (идентификатор пользователя. временная метка . global_secret)
Значение global_secret должно быть очень длинным (40 символов или около того), чтобы люди не взламывали хэш, поскольку это позволило бы им создавать свои собственные учетные данные с идентификаторами пользователей других пользователей!
«Другие сайты» будут проверять наличие этого файла cookie, вычислять хэш, используя открытые текстовые значения userid, timestamp и global_secret (которые знают все сайты), сверяют его с предоставленным хэшем, если они совпадают, то это действительный сертификат.
Затем вам нужно будет проверить временную метку и решить, достаточно ли это «нового» сертификата для разрешения доступа.
Это стандартный метод.
Комментарии:
1. Как другие сайты будут проверять наличие файла cookie? Файлы cookie устанавливаются для каждого домена (или более узкого), а сайты являются «внешними».
2. При входе в систему повторите серию невидимых iframes для каждого из внешних сайтов. Это может быть централизовано, чтобы вам не нужно было поддерживать отдельные списки. Запросы iframe будут содержать переменную GET с учетными данными, которые внешний сайт может затем передать обратно в виде файла cookie.
Ответ №2:
Не делай этого. Ознакомьтесь с условиями предоставления услуг для каждого сайта (например, facebook).:
https://www.facebook.com/terms.php?ref=pf
(3.2) Вы не будете собирать контент или информацию пользователей или иным образом получать доступ к Facebook, используя автоматические средства (такие как роботы для сбора урожая, роботы, пауки или скребки) без нашего разрешения.
(3.5) Вы не будете запрашивать регистрационную информацию или получать доступ к учетной записи, принадлежащей кому-либо другому.
(4.8) Вы не будете делиться своим паролем (или, в случае разработчиков, своим секретным ключом), позволять кому-либо другому получать доступ к вашей учетной записи или делать что-либо еще, что может поставить под угрозу безопасность вашей учетной записи.
Вы подвергаете риску себя и пользователя.
У этих сайтов есть API не просто так, поэтому я предлагаю вам использовать их как более «легальный» подход.
Итак, если вы пытаетесь получить информацию о пользователе Facebook, создайте приложение, попросите их авторизовать ваше приложение, а затем извлеките информацию через api facebook (пример). Вы также можете размещать сообщения на их стене с помощью этого метода.
Комментарии:
1. Я должен согласиться со стиветером, возможно, вам придется бороться с заведомо плохо документированным API Facebook, но это определенно более безопасный подход (юридически и с точки зрения безопасности). И если ваш работодатель по-прежнему настаивает на том, чтобы делать это прежним способом, я бы посоветовал найти более авторитетного работодателя.
2. Спасибо за отзыв… Обратите внимание, что мы не будем регистрировать людей на обычных пользовательских сайтах, таких как Facebook или Twitter. Мы будем регистрировать их на сайтах, связанных с бизнесом, которые могут (или не могут) более охотно позволить нам это сделать. Мы оценим эту сторону вещей, как только выясним, возможно ли это технически с минимальным обслуживанием / халтурой.
Ответ №3:
Обычный способ автоматического входа пользователя в систему — установить файл cookie со случайной строкой. Должно быть, случайная строка не поддается угадыванию. На сервере вы проверяете файл cookie, и если он совпадает, вы регистрируете пользователя. Но если ваш сайт не полностью обслуживается с помощью https, каждый, кто может прослушивать трафик, может притвориться пользователем. Чтобы немного повысить безопасность, вы могли бы реализовать, что случайная строка действительна только в течение нескольких дней просмотра, а затем пользователь должен снова войти в систему, и генерируется новая случайная строка. Итак, если кто-то украдет идентификатор cookie, злоумышленник имеет доступ к учетной записи только на определенное время.
Комментарии:
1. Как другие сайты будут проверять наличие файла cookie? Файлы cookie устанавливаются для каждого домена (или более узкого), а сайты являются «внешними».
2. Другие сайты не могут получить файл cookie с помощью Javascript (если нет проблем с безопасностью). Например, если вы находитесь в незашифрованной wlan, тогда каждый может прочитать весь ваш трафик (если он не зашифрован. например: https). Из этого трафика злоумышленник может извлечь все, что ему нужно.
3. Это моя точка зрения. Мой сайт не может установить cookie для входа кого-либо на ваш сайт.