• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Сессии Ведут Себя Очень Странно

  • Автор темы staromand
  • Дата начала
S

staromand

в общем есть такой файл, который проверяет при загрузке страницы "index.php", залогинен ли пользователь

этот файл включен в "index.php"
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"logincheck.php"</div></div><div class="sp-body"><div class="sp-content">
PHP:
<?php

if (isset($_GET['out'])) {
unset($_SESSION['login']);
unset($_SESSION['id']);
setcookie("login", "", 100);
setcookie("id", "", 100);
};
if (!isset($_SESSION['login']) or !isset($_SESSION['id'])) {
unset($const_logined);
};
if (empty($_SESSION['login']) or empty($_SESSION['id'])) {
$const_logined = FALSE;
} else {
$const_logined = TRUE;
};
?>

а также есть файл, который проверяет при вводе логина с паролем валидность введенных данных и ищет по базе нужный "id"

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"login.php"</div></div><div class="sp-body"><div class="sp-content">
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="windows-1251"/>
<link rel="stylesheet" href="../style.css" type="text/css">
<title>Добро пожаловать! - firstsite</title>
</head>
<body>
<div id="ref">
<?php
session_start();

if (isset($_POST['login'])) {
$login = $_POST['login'];
if ($login == '') {
unset($login);
};
};

if (isset($_POST['password'])) {
$password=$_POST['password'];
if ($password =='') {
unset($password);
};
};

if (empty($login) or empty($password)) {
exit ("<div id=\"ref_err\">Вы ввели не всю информацию, вернитесь <a href='../index.php'>назад</a> и заполните все поля!</div>");
};

include ("dbase.php");

$login = stripslashes($login);
$login = mysql_escape_string($login);
$login = htmlspecialchars($login);
$login = trim($login);$password = stripslashes($password);
$password = mysql_escape_string($password);
$password = htmlspecialchars($password);
$password = trim($password);
$password = md5($password);
$query = "
SELECT `login`, `password`, `id`
FROM `usersdb`
WHERE `login` = '{$login}'
";
$result = mysql_query($query, $db);
$myrow = mysql_fetch_assoc($result);
if (empty($myrow['password'])) {
exit ("<div id=\"ref_err\">Извините, введённое вами имя пользователя или пароль неверны. <a href='../index.php'>Главная страница</a></div>");
} else {
if ($myrow['password']==$password) {
$_SESSION['login']=$myrow['login']; 
$_SESSION['id']=$myrow['id'];
if(isset($_POST['savelogin'])) {
//setcookie("login", $_SESSION['login'], time() + 60*60*24*30);
//setcookie("id", $_SESSION['id'], time() + 60*60*24*30);
};
header('Refresh: 3; URL=../index.php');
echo "<div id=\"ref_ok\">Вы вошли! Через 2 сек. вы будете перенаправлены на главную страницу.<br>Если Ваш браузер не поддерживает автоматическое перенаправление, перейдите по <a href=\"../index.php\">этой ссылке</a></div>";
} else {
exit ("<div id=\"ref_err\">Извините, введённый вами login или пароль неверный. <a href='../index.php'>Главная страница</a></div>");
};
};
?>
</div>
</body>
</html>

при входе шаблон входа сменяется с такого вида:
link removed
на такой:
link removed

это наглядный индикатор того, вошел или нет

вопрос - почему, когда сразу вхожу он работает на ура, а как только уже под сессией прохожу по какой-либо странице внутри сайта форма ввода показывается (как будто не залогинен)? вся мистика в том, что когда ЕЩЁ РАЗ прохожу по любой ссылке формы нет и видно, что я вошел на протяжении всей сессии вплоть до выхода.
 

Вложения

  • 0.PNG
    0.PNG
    3,1 КБ · Просмотры: 296
  • 1.PNG
    1.PNG
    1,3 КБ · Просмотры: 549
M

-master-

да и зачем там вообще 2 значения хранить, держите что-то одно, на худой конец сразу зафетченый ассоц
 
S

staromand

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!