В этом нет ничего плохого
isset($_SESSION['uid']);
Данные сеанса не передаются пользователю, они хранятся на сервере (или там, где их хранит обработчик сеанса). Пользователю передается идентификатор сеанса, который представляет собой случайную строку, сгенерированную PHP, которую, конечно, можно украсть, поскольку она отправляется пользователю.
Следует четко отметить, что случайное хранение строки в базе данных и сеансе пользователя, а затем ее использование для идентификации пользователя не делает сеанс более безопасным, если злоумышленник получит сеанс, который он все еще собирается скомпрометировать Пользователь.
То, что мы сейчас обсуждаем, это перехват сеанса , вы можете подумать, что вы можете просто сохранить IP-адрес в сеансе и проверить это с помощью IP-адреса, полученного из запроса, и покончить с ним. Однако зачастую это не так просто, я с этим сгорел совсем недавно, когда в большом веб-приложении мы хранили хэш пользовательского агента + IP-адрес в сеансе, а затем проверяли, совпадают ли они в каждом случае, для 99% пользователей. это работало нормально. Тем не менее, мы начали получать звонки от людей, которые обнаружили, что они постоянно выходили из системы без объяснения причин. Мы включили регистрацию проверок перехвата сеанса, чтобы увидеть, что происходит, и обнаружили, что эти люди будут заходить на один IP, а их сеанс будет продолжаться на другом, это не была попытка перехвата, однако это было связано с тем, как их прокси-сервер сработало, в результате мы изменили наш код перехвата сеанса, чтобы определить класс IP-адреса и оттуда выяснить сетевую часть IP-адреса и сохранить только те части IP-адреса, это немного менее безопасный в этом сеансе угон теоретически может происходить из одной и той же сети, но приводит к исчезновению всех наших ложных срабатываний.