Как я могу запретить пользователям публиковать свои данные для входа в мое веб-приложение?

Что я имею до сих пор:

  1. сеанс на стороне сервера
  2. уникальный идентификатор (md5) компьютера, созданный Request.ServerVariables("HTTP_USER_AGENT") & REMOTE_HOST и сохраненный в базе данных

но что еще я могу сделать в этом случае? пользователи продолжают делиться своими данными для входа:(

8 ответов

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

Попробуйте контролировать проблему.

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

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

Если вы попытаетесь контролировать проблему, лучшее, что я услышал, - убедиться, что вы не влияете на пользователей, законно использующих систему. Причинение боли законному пользователю, либо заставляющее его устанавливать программное обеспечение DRM на своем компьютере, либо требуя, чтобы он снял обувь, чтобы сесть в самолет, только доставляет ему неприятности и ухудшает видимое качество вашего обслуживания в его глазах. Попробуйте найти способы выявления проблемных пользователей, не влияя на обычную аудиторию: выбор черного списка (запрет) IP-адресов может быть эффективным в случае веб-службы. (Википедия контролирует спамеров и вредоносных редакторов таким образом, и некоторые люди контролируют спам-сообщения таким образом.)

Теперь другая линия рассуждений:

Игнорировать проблему.

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

На самом деле, какое-то сочетание этих двух факторов, вероятно, является наиболее эффективной мерой.

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

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

Это относительно легко сделать. Свяжите с каждым пользователем в базе данных поле типа session_key, которое генерируется случайным образом при входе в систему. Сохраните этот ключ сеанса в базе данных И в файле cookie в браузере пользователей и убедитесь, что ключи сеанса совпадают. Если нет, выйдите из системы. Всякий раз, когда кто-то входит в систему, он генерирует новый сеансовый ключ, таким образом деактивирует все предыдущие сеансы и выходит из системы пользователя. Вы также можете попытаться отслеживать другую информацию, такую ​​как IP-адрес пользователя и т. Д., Связанные с сеансом. Он не на 100% надежен, но мешает большинству пользователей делиться аккаунтами.

Номер два не работает. Я подключаюсь как минимум с пяти разных устройств. Вы определенно не хотите присоединяться к циклу аппаратного и программного обновления своих клиентов

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

Или запретите пользователям входить в учетную запись, если на сервере уже есть сеанс для этого пользователя.

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

Единственный способ помешать пользователям делиться чем-либо - это сделать это чем-то не доступным для обмена (по крайней мере, с помощью какого-то серьезного взлома). Но это касается оборудования, которое может не подходить для вашего проекта. Я говорю об аппаратных криптотокенах, которые хранят закрытые ключи и не позволяют копировать их. Если вы дадите своему пользователю такой токен с закрытым ключом внутри, пользователь может передать сам токен другому человеку, но он не сможет скопировать его.

Это просто Используйте от 10 до 15 любимых вопросов и ответов на них при регистрации. Спросите случайно одного из них при каждом входе в систему.

Теперь я думаю, что это комбинация нескольких факторов, если не всех, что может сработать

  1. снизить стоимость подписки

  2. предотвратить несколько сеансов одновременно

  3. использовать двухфакторную аутентификацию

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

  5. Я думаю, что сканирование отпечатков пальцев и распознавание лиц рука об руку с идентификаторами устройств может работать

  6. наконец, подумайте о загрузке вашего веб-сайта в приложении на основе веб-просмотра для пользователей Android.

Другие вопросы по тегам