Я работаю над сайтом WordPress с BuddyPress, темой BuddyX Pro и плагином Wise Chat Pro. Недавно я занимался борьбой со злоупотреблениями на странице группового чата, где пользователи часто обходят баны по IP-адресу с помощью TOR или VPN. Чтобы повысить безопасность, я написал собственный плагин, который выполняет следующие функции: Функционал плагина:
Поиск IP-адреса: плагин использует MaxMind для проверки местоположения IP-адреса пользователя и определения, является ли это известным прокси-сервером или VPN. При желании он также может запросить API ProxyCheck.io (в настоящее время отключен).
Снятие отпечатков пальцев устройства: для каждого уникального устройства генерируется набор отпечатков пальцев (оба расширенных — на основе серверных данных). и данные на стороне клиента — и резервный вариант, используя только данные на стороне сервера). Примечание. Я знаю, что это не на 100 % надежно, но в моем случае я бы хотел использовать его в качестве дополнительного ресурса.
Бот Белый список: известные боты (например, Google, Microsoft) занесены в белый список, и им всегда разрешен вход.
Условные правила: IP-адреса из определенных стран (например, Китая, России) блокируются, а пользователи перенаправляются. к другая страница.
Как это работает:
Блокировка IP-адресов: IP-адреса, не соответствующие условиям (например, географическому местоположению, статусу VPN), перенаправляются правильно.
Генерация отпечатков пальцев: генерируются два набора отпечатков пальцев (расширенный и резервный). , хешируется и сохраняется в защищенном файле JSON за 5 дней до удаляется.
Блокировка отпечатков пальцев: я добавил функцию ручной блокировки определенных отпечатков пальцев в крайнем случае. Это работает так, как задумано, но я столкнулся с проблемой, когда отпечаток пальца, созданный и проверенный по черному списку, не соответствует отпечатку, записанному в файл JSON.
Проблема:
Я создаю набор из двух отпечатков пальцев (расширенный и резервный):
Когда пользователь вернется, я ожидаю, что тот же отпечаток пальца (расширенный или резервный), который сгенерирован и зарегистрирован в файле Fingerprints.json, будет распознан и сохранен в черном списке (blocked_fingerprints. json), приведет к тому, что пользователь будет перенаправлен, как и ожидалось (в случае заблокированного отпечатка пальца).
$blocked_fingerprints = get_blocked_fingerprints();
if (in_array($fingerprint_data['fallback_fingerprint'], $blocked_fingerprints)) {
wp_safe_redirect($redirect_url);
exit;
}
if (in_array($fingerprint_data['advanced_fingerprint'], $blocked_fingerprints)) {
wp_safe_redirect($redirect_url);
exit;
}
Однако этого не происходит.
Сгенерированные и проверенные по черному списку отпечатки пальцев не соответствуют написанному в файл JSON.
Я попытался посмотреть, какие отпечатки пальцев проверяются по черному списку, добавив их в свой журнал ошибок:
В журнале ошибок показан набор отпечатков пальцев, отличный от того, который записан в файле Fingerprints.json. Это говорит о том, что существует какое-то несоответствие в том, как генерируется отпечаток пальца при проверке черного списка. Даже для серверного (резервного) отпечатка, который всегда должен быть идентичным. Итак, похоже, что отпечатки пальцев вычисляются и/или хэшируются по-другому, и я не могу понять, как и почему. Я понятия не имею, в чем разница между обеими ситуациями.
Мои файлы полного кода (для проверки) находятся здесь: https://pastebin.com/u/flower88 /1/JUEMKr6z
/wp-content/plugins/pluginname/fingerprint.js (загружается в заголовок страницы)< /li>
Фрагмент выполняется через плагин WPCode в заголовке конкретной страницы.
Что работает :
IP-адреса, не соответствующие критериям, перенаправляются правильно.
Боты, внесенные в белый список, разрешены, как и ожидалось.
Два набора отпечатки пальцев (расширенные и резервные) генерируются и сохраняются в файле JSON правильно. Примечание. Эти отпечатки пальцев остаются идентичными, стабильными и постоянными в течение нескольких сеансов и дней и уникальны для каждого устройства.
Старые отпечатки пальцев удаляются через 5 дней.Примечание. Эти отпечатки пальцев остаются идентичными, стабильными и постоянными в течение нескольких сеансов и дней и уникальны для каждого устройства.
Старые отпечатки пальцев удаляются через 5 дней.Примечание. li>
Блокировка определенных отпечатков пальцев работает, но сравнение отпечатков пальцев непоследовательно.
Что я пробовал:< /strong>
Ведение журнала показывает мне, что сгенерированные отпечатки пальцев, которые проверяются по заблокированным отпечаткам пальцев, не совпадают как для расширенных, так и для резервных отпечатков пальцев.
Приостановите PHP-файл с помощью Sleep() перед добавлением блока, чтобы дать на сайте достаточно времени, чтобы сгенерировать правильный отпечаток пальца (не сработало)
Я потратил 4 дня на устранение этой проблемы и даже обратился за помощью к ChatGPT, но пока не нашел решения . Тут я даже сомневаюсь, правильно ли я понимаю суть вопроса. ChatGPT не помог, так как я снова и снова ходил по кругу.
У меня закончились идеи, и я был бы очень признателен за любые идеи или предложения по устранению несоответствия отпечатков пальцев с помощью чистой, свежий, человеческий взгляд на это.
Я работаю над сайтом WordPress с BuddyPress, темой BuddyX Pro и плагином Wise Chat Pro. Недавно я занимался борьбой со злоупотреблениями на странице группового чата, где пользователи часто обходят баны по IP-адресу с помощью TOR или VPN. Чтобы повысить безопасность, я написал собственный плагин, который выполняет следующие функции: [b]Функционал плагина:[/b] [list] [*]Поиск IP-адреса: плагин использует MaxMind для проверки местоположения IP-адреса пользователя и определения, является ли это известным прокси-сервером или VPN. При желании он также может запросить API ProxyCheck.io (в настоящее время отключен). [*]Снятие отпечатков пальцев устройства: для каждого уникального устройства генерируется набор отпечатков пальцев (оба расширенных — на основе серверных данных). и данные на стороне клиента — и резервный вариант, используя только данные на стороне сервера). [b]Примечание.[/b] Я знаю, что это не на 100 % надежно, но в моем случае я бы хотел использовать его в качестве дополнительного ресурса. [*]Бот Белый список: известные боты (например, Google, Microsoft) занесены в белый список, и им всегда разрешен вход. [*]Условные правила: IP-адреса из определенных стран (например, Китая, России) блокируются, а пользователи перенаправляются. к другая страница. [/list] [b]Как это работает:[/b] [list] [*]Блокировка IP-адресов: IP-адреса, не соответствующие условиям (например, географическому местоположению, статусу VPN), перенаправляются правильно. [*]Генерация отпечатков пальцев: генерируются два набора отпечатков пальцев (расширенный и резервный). , хешируется и сохраняется в защищенном файле JSON за 5 дней до удаляется. [*]Блокировка отпечатков пальцев: я добавил функцию ручной блокировки определенных отпечатков пальцев в крайнем случае. Это работает так, как задумано, но я столкнулся с проблемой, [b]когда отпечаток пальца, созданный и проверенный по черному списку, не соответствует отпечатку, записанному в файл JSON[/b].
[b]Проблема:[/b] Я создаю набор из двух отпечатков пальцев (расширенный и резервный): [code]function generate_fingerprint() { $fallback = generate_fallback_fingerprint(); $advanced = generate_advanced_fingerprint(); $combined = md5($fallback . $advanced); $reliability = calculate_reliability_score();
return [ 'fallback_fingerprint' => $fallback, 'advanced_fingerprint' => $combined, 'reliability_score' => $reliability ]; } [/code] Этот набор отпечатков пальцев сохраняется в файле журнала Fingerprints.json: [code]function save_fingerprint($ip, $fingerprint_data) { $data = []; if (file_exists(FINGERPRINT_FILE)) { $data = json_decode(file_get_contents(FINGERPRINT_FILE), true) ?? []; } $timestamp = time(); $key = $ip . '_' . $timestamp; $data[$key] = [ 'ip' => $ip, 'fallback_fingerprint' => $fingerprint_data['fallback_fingerprint'], 'advanced_fingerprint' => $fingerprint_data['advanced_fingerprint'], 'reliability_score' => $fingerprint_data['reliability_score'], 'timestamp' => $timestamp, // 'client_data' => $_POST // Only enabled when needed for debugging ]; file_put_contents(FINGERPRINT_FILE, json_encode($data, JSON_PRETTY_PRINT)); } [/code] Когда пользователь вернется, я ожидаю, что тот же отпечаток пальца (расширенный или резервный), который сгенерирован и зарегистрирован в файле Fingerprints.json, будет распознан и сохранен в черном списке (blocked_fingerprints. json), приведет к тому, что пользователь будет перенаправлен, как и ожидалось (в случае заблокированного отпечатка пальца). [code] $blocked_fingerprints = get_blocked_fingerprints(); if (in_array($fingerprint_data['fallback_fingerprint'], $blocked_fingerprints)) { wp_safe_redirect($redirect_url); exit; } if (in_array($fingerprint_data['advanced_fingerprint'], $blocked_fingerprints)) { wp_safe_redirect($redirect_url); exit; } [/code] Однако этого не происходит. Сгенерированные и проверенные по черному списку отпечатки пальцев [b]не соответствуют[/b] написанному в файл JSON. Я попытался посмотреть, какие отпечатки пальцев проверяются по черному списку, добавив их в свой журнал ошибок:
[code]error_log("Fingerprint saved for IP: $ip");[/code] В журнале ошибок показан набор отпечатков пальцев, отличный от того, который записан в файле Fingerprints.json. Это говорит о том, что существует какое-то несоответствие в том, как генерируется отпечаток пальца при проверке черного списка. Даже для серверного (резервного) отпечатка, который всегда должен быть идентичным. Итак, похоже, что отпечатки пальцев вычисляются и/или хэшируются по-другому, и я не могу понять, как и почему. Я понятия не имею, в чем разница между обеими ситуациями. Мои файлы полного кода (для проверки) находятся здесь: https://pastebin.com/u/flower88 /1/JUEMKr6z
Пароль к файлам: G3F80fhczm [b]Моя настройка:[/b] < ул> [*]/wp-content/plugins/pluginname/block-anonymous.php [*]/wp-content/plugins/pluginname/fingerprint.js (загружается в заголовок страницы)< /li> Фрагмент выполняется через плагин WPCode в заголовке конкретной страницы. [/list] [b]Что работает :[/b] [list] [*]IP-адреса, не соответствующие критериям, перенаправляются правильно. [*]Боты, внесенные в белый список, разрешены, как и ожидалось. [*]Два набора отпечатки пальцев (расширенные и резервные) генерируются и сохраняются в файле JSON правильно. [b]Примечание.[/b] Эти отпечатки пальцев остаются идентичными, стабильными и постоянными в течение нескольких сеансов и дней и уникальны для каждого устройства. [*]Старые отпечатки пальцев удаляются через 5 дней.Примечание. Эти отпечатки пальцев остаются идентичными, стабильными и постоянными в течение нескольких сеансов и дней и уникальны для каждого устройства. [*]Старые отпечатки пальцев удаляются через 5 дней.Примечание. li> Блокировка определенных отпечатков пальцев работает, но сравнение отпечатков пальцев непоследовательно. [/list] Что я пробовал:< /strong> [list] [*]Ведение журнала показывает мне, что сгенерированные отпечатки пальцев, которые проверяются по заблокированным отпечаткам пальцев, не совпадают как для расширенных, так и для резервных отпечатков пальцев. [*]Приостановите PHP-файл с помощью Sleep() перед добавлением блока, чтобы дать на сайте достаточно времени, чтобы сгенерировать правильный отпечаток пальца (не сработало) [*]Я потратил 4 дня на устранение этой проблемы и даже обратился за помощью к ChatGPT, но пока не нашел решения . Тут я даже сомневаюсь, правильно ли я понимаю суть вопроса. ChatGPT не помог, так как я снова и снова ходил по кругу. [*]У меня закончились идеи, и я был бы очень признателен за любые идеи или предложения по устранению несоответствия отпечатков пальцев с помощью чистой, свежий, человеческий взгляд на это. [/list] Заранее большое спасибо!
Я работаю над сайтом WordPress с BuddyPress, темой BuddyX Pro и плагином Wise Chat Pro. Недавно я занимался борьбой со злоупотреблениями на странице группового чата, где пользователи часто обходят баны по IP-адресу с помощью TOR или VPN. Чтобы...
Я работаю над сайтом WordPress с BuddyPress, темой BuddyX Pro и плагином Wise Chat Pro. Недавно я боролся со злоупотреблениями на странице группового чата, где пользователи часто обходят баны по IP-адресу с помощью TOR или VPN. Чтобы повысить...
Я использовал seleniumwire+chromedriver для доступа к странице входа на целевой сайт, но ссылку установить не удалось. Я предпринял некоторые шаги, чтобы сервер не обнаружил, что я использую селен, но, похоже, он не работает. Когда я использовал...
Я хочу сделать веб -сайт, на котором я хочу проверить пользователя по отпечаткам пальцев. Я хочу сохранить пользовательский отпечаток пальцев в базе данных, просто используя сканер отпечатков пальцев Mobile, я не хочу использовать какой -либо...
Я пытаюсь создать приложение C# для чтения данных с весов (HLWagen IT1000). При использовании порта RS232 приложение смогло обнаружить и отобразить данные взвешивания. Вот мой код.
private void Weighing_Load(object sender, EventArgs e)
{