#node.js
#node.js
Вопрос:
Я работаю над программным обеспечением, в котором я хотел бы иметь возможность запрещать пользователя на основе его IP-адреса, чтобы пользователь не мог легко создать другую учетную запись после запрета, но я также хотел бы сделать IP-адрес недоступным для администраторов по соображениям конфиденциальности пользователей.
Есть ли у человечества в настоящее время какие-либо решения такой проблемы?
Ответ №1:
Вы можете обрабатывать IP-адреса так, как часто обрабатываются пароли, когда вы выполняете некоторые необратимые операции с IP-адресом (например, криптографический хэш), и это то, что вы храните в своей базе данных. Затем, когда вы хотите проверить входящий IP-адрес по сравнению с в базе данных вы выполняете ту же необратимую операцию с тестовым IP-адресом и просматриваете этот результат в базе данных.
Таким образом, вы можете проверить, есть ли в вашей базе данных IP-адрес, который выдает тот же хэш, но нет способа получить фактические IP-адреса из базы данных. Вам нужно будет убедиться, что используемый вами хэш крайне маловероятен для создания одного и того же значения хэша для нескольких IP-адресов.
Вы должны знать, что существуют некоторые ситуации (например, корпоративные прокси), когда может показаться, что несколько пользователей приходят с одного и того же IP-адреса, поэтому запрет пользователя исключительно на основе IP-адреса может привести к наложению запрета на невинных пользователей, которые приходят из тесно связанной части сети.
Вы также должны знать, что IP-адрес подобен «слабому паролю», и хэш может быть «взломан» для данного IP-адреса, просто перепробовав все возможные IP-адреса, пока не найдете тот, у которого хэш совпадает с тем, который есть в базе данных. Если ваш единственный уникальный идентификатор — это IP-адрес (и к нему больше ничего нельзя добавить), то вы мало что можете с этим поделать. Если вы можете объединить что-то еще с IP-адресом, чтобы сделать его более уникальным, вы можете сделать его менее взломанным.
Комментарии:
1. К сожалению, адреса IPv4 слишком короткие (4 байта) и могут быть легко перебраны. Я не уверен, подходит ли IPv6 для пожирателя.