Люди вошли в учетные записи случайных пользователей, используя сеансы PHP - PullRequest
4 голосов
/ 09 мая 2011

У меня постоянно возникают жалобы на то, что пользователи вошли как друг в друга. Они даже могут редактировать свои профили и публиковать их как это ... это, очевидно, огромная проблема. Люди, которые даже не зарегистрированы, посещают сайт и видят, что они вошли как другие люди.

Это происходит в Safari и Firefox

Мои сеансы устанавливаются, когда люди входят в систему, используя систему $_SESSION['variable'] = name;, поэтому довольно стандартно. Сеансы являются перекрестными поддоменами с использованием:

ob_start();
session_set_cookie_params(0, '/', '.subverb.net');
session_start();

в заголовке всех моих страниц.

У меня есть iframe, который содержит часть чата сайта, которая также содержит тот же заголовок

Я не знаю, какую еще информацию я могу дать, поэтому, пожалуйста, спросите. Мне действительно нужно это отсортировать, но я не уверен, в чем проблема!

Спасибо


В ответ на нижеследующее:

Стандартный сценарий входа взят из учебника Ларри Уллмана:

if ($un && $p) { // If everything's OK.

    // Query the database.
    $query = "SELECT member_id, member_firstname, member_type, username FROM member WHERE (username='$un' AND password=SHA('$p')) AND active IS NULL";  

    $result = mysqli_query ($dbc, $query) or trigger_error ("query: $query\n<br />MySQL Error: " . mysqli_error($query));

    if (@mysqli_num_rows($result) == 1) { // A match was made.

        // Register the values & redirect.
        $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
        mysqli_free_result($result);

        $_SESSION['member_id'] = $row['member_id'];
        $_SESSION['first_name'] = $row['member_firstname'];
        $_SESSION['member_type'] = $row['member_type'];
        $_SESSION['username'] = $row['username'];

Сценарий входа в Facebook делает следующее:

$query = "SELECT * FROM member WHERE oauth_prov = 1 AND fb_userid = ".$user['id'];
    $result = mysqli_query ($dbc, $query) or trigger_error ("query: $query\n<br />MySQL Error: " . mysqli_error($dbc));


    if(mysqli_num_rows($result) == 1 ) {



    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {;


    $_SESSION['first_name'] = $row['member_firstname'];
    $_SESSION['member_id'] = $row['user_id'];
    $_SESSION['oauth_uid'] = $row['fb_userid'];
    $_SESSION['username'] = $row['username'];

Все входы очищены, и у пользователя нет других способов добавить детали. Имя пользователя и пароль добавлены как обычно, идентификатор Facebook, полученный из Facebook, нажав на ссылку, которая выполняет сценарий.

Эти ошибки происходят задолго до входа в систему или даже когда входа в систему не было. Нет другого места, где значения сеанса устанавливаются на сайте.

Ответы [ 3 ]

3 голосов
/ 09 мая 2011

Я бы проверил процедуру базы данных, которая регистрирует пользователей на наличие дыр. Вы уверены, что он выбирает подходящего пользователя и только подходящего? Проверяли ли вы, что ваш оператор выбора невосприимчив к различным сценариям пользовательского ввода? Учитывая, что он сохраняется при загрузке страниц, это почти наверняка проблема $_SESSION. Предполагая, что вы загружаете информацию о пользователе при входе в систему, из этого следует, что проблема заключается в начальной заполненности переменной $_SESSION во время входа в систему. Поэтому вы должны обязательно проверить скрипт входа в систему, чтобы убедиться, что он надежный.

Возможно, вы захотите опубликовать другие части вашего сценария входа, чтобы мы могли проверить его на наличие дыр / проблем.

1 голос
/ 09 мая 2011

Может быть есть столкновение в этом скиде?Это объясняет случайную часть.Чтобы предотвратить это, используя быстрый взлом, сохраните IP-адрес в сеансе и добавьте страницу «Извините», если IP-адрес изменится.Много ли у вас посетителей?

0 голосов
/ 05 декабря 2014

Вы когда-нибудь пришли к твердому заключению по этому поводу?

Звучит как сценарий входа в систему, хотя неисправность была маловероятной из-за его случайного характера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...