Привет!
У меня настроен пользовательский интерфейс login.html, в котором отображаются условия использования (T&C) и есть чекбокс для согласия пользователя с T&C. Для имени пользователя я использую MAC-адрес и скрытое поле: <input type="hidden" name="username" value="$(mac)">. Точка доступа бесплатна для пользователей, и Radius используется для ограничения времени сессии до X. Всё работает хорошо, но есть уязвимость в безопасности. Используя Firefox, я вижу, что браузер отправляет поле имени пользователя на сервлет авторизации. Поэтому, когда пользователь достиг лимита бесплатной сессии, он может вручную отправить запрос на сервлет (например, используя curl), изменив MAC-адрес и получив ещё одну бесплатную сессию. Я знаю, что пользователь может подделать MAC-адрес, но я пытаюсь предотвратить подделку на уровне HTML/сервлета. Не может ли кто-нибудь подсказать, как решить эту проблему? Возможно, есть какое-нибудь событие, которое генерируется до входа в систему, чтобы я мог проверить, действительно ли переменная имени пользователя является MAC-адресом, и продолжить вход, если это так, иначе отклонить вход? Единственное событие, которое я вижу, - это on-login, и в худшем случае я могу сделать проверку после входа и выйти из аккаунта пользователя. Как выйти из аккаунта пользователя из скрипта? Я пробовал следующее, но, очевидно, это не работает, потому что команда `\tool fetch` не знает, какую сессию нужно завершить.
:local freeuser [/ip hotspot active find user=$user];
:local freemac [/ip hotspot active get $freeuser mac-address];
:if ( $user = $freemac) do={
:log info ("valid user");
} else {
:log info ("invalid user");
/tool fetch url="http://<router_address>/logout" mode=http ;
}
С уважением,
Keith
У меня настроен пользовательский интерфейс login.html, в котором отображаются условия использования (T&C) и есть чекбокс для согласия пользователя с T&C. Для имени пользователя я использую MAC-адрес и скрытое поле: <input type="hidden" name="username" value="$(mac)">. Точка доступа бесплатна для пользователей, и Radius используется для ограничения времени сессии до X. Всё работает хорошо, но есть уязвимость в безопасности. Используя Firefox, я вижу, что браузер отправляет поле имени пользователя на сервлет авторизации. Поэтому, когда пользователь достиг лимита бесплатной сессии, он может вручную отправить запрос на сервлет (например, используя curl), изменив MAC-адрес и получив ещё одну бесплатную сессию. Я знаю, что пользователь может подделать MAC-адрес, но я пытаюсь предотвратить подделку на уровне HTML/сервлета. Не может ли кто-нибудь подсказать, как решить эту проблему? Возможно, есть какое-нибудь событие, которое генерируется до входа в систему, чтобы я мог проверить, действительно ли переменная имени пользователя является MAC-адресом, и продолжить вход, если это так, иначе отклонить вход? Единственное событие, которое я вижу, - это on-login, и в худшем случае я могу сделать проверку после входа и выйти из аккаунта пользователя. Как выйти из аккаунта пользователя из скрипта? Я пробовал следующее, но, очевидно, это не работает, потому что команда `\tool fetch` не знает, какую сессию нужно завершить.
:local freeuser [/ip hotspot active find user=$user];
:local freemac [/ip hotspot active get $freeuser mac-address];
:if ( $user = $freemac) do={
:log info ("valid user");
} else {
:log info ("invalid user");
/tool fetch url="http://<router_address>/logout" mode=http ;
}
С уважением,
Keith
