Мне показалось с моих сессий страница безопасности?


Для того, чтобы обеспечить мои сеансы страницу, у меня есть следующие страницы.

Мои вопросы

  1. Я перебарщиваешь с этим?
  2. Я должен поместить маркер в login.php вместо loginForm.php ?
  3. Когда пользователь Логинов, я сохранить свой IP в БД. Я должен использовать это для проверки подлинности ?

Спасибо сообществу.

Форма входа loginForm.php

$token = md5(uniqid(rand(),TRUE));
<input name="login" type="text" class="textfield" id="login" />
<input name="password" type="password" class="textfield" id="password" />
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<input type="submit" name="Submit" value="Login" />

При входе пользователя login.php

$fingerprint = sha1('SECRET-SALT'.$_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR'].$_POST['token']);
    session_regenerate_id();
    $member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
$_SESSION['SESS_TOKEN'] = $_POST['token'];
$_SESSION['SESS_FINGERPRINT'] = $fingerprint;
session_write_close();
    header("location: index.php");
    exit();

Проверка подлинности на каждой странице auth.php

    session_start();
    $fingerprint = sha1('SECRET-SALT'.$_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR'].$_SESSION['SESS_TOKEN']);
    if( !isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')  || ($_SESSION['SESS_FINGERPRINT'] != $fingerprint) || !isset($_SESSION['SESS_TOKEN']) || (trim($_SESSION['SESS_TOKEN']) == '') ) {
        header("location: denied.php");
        exit();
    }


333
2
задан 25 августа 2011 в 03:08 Источник Поделиться
Комментарии
2 ответа

1) перенервничал является вопрос о том, как окрестностя вашей защищенной информации. Мое личное мнение заключается в том, что по характеру цифровых компьютеров и интернета там нет такого понятия, как переусердствуешь в безопасности. Вы либо хотите что-то, чтобы быть публичными или не вы, а в последнем случае существует совсем немного работы и знания привлекают к борьбе всех разные атаки. С другой стороны, много других людей, скажет, что если вашей защищенной информации не достаточно ценного для хакеров, тогда, наверное, никакого хардкора хакер будет инвестировать достаточно времени, так что ваша защита может и не стоит ваших усилий по программированию.

2) в коде выше вы строите свой отпечаток на хеширование объединение различной информации об удаленных пользователей и маркер используется в качестве своеобразной солью (в дополнение к 'секрет-соль'), чтобы сделать хэш уникален. Поэтому ответ зависит от того, как обеспечивается безопасность хранения данных сессии.

Если вы одни на сервере, или у вас есть безопасное хранение сессии $_SESSION (как базу данных, защищенную паролем), тогда вам не придется беспокоиться о ком-то прочитав содержимое переменных сессии. Это также означает, что защита ваших отпечатков пальцев с помощью хэширования это абсолютно бесполезно, в таком случае вы можете просто удалить маркер и хеширования из вашего кода. В этом случае вы тоже не нужны отпечатки пальцев, вы можете просто хранить переменные среды пользователя в отдельности и сравнить их по отдельности.

Если есть способ, чтобы получить $_SESSION содержание утечка, то вы хотите защитить личную информацию в нем. В этом случае вы хотите сохранить свой маркер частная и не отправить его пользователю, положил его в login.php . Как правило, вам не придется беспокоиться о защите солью, потому что даже если он знал, что это существенно увеличит время для хакера чтобы взломать пароль, не только потому, что длинный пароль строку, но и потому, что предварительно вычисляемые радужных таблиц становятся бесполезными. Но в вашем случае у вас нет пароля, все у вас есть user_agent и ИС, оба из которых являются легко предсказуемыми или sniffable. Это означает, что объединенная информация является в основном не переменную для хакера, так что единственное, что удерживает его от растрескивания ваши отпечатки пальцев ваши солей. Так что если вы обнаружите их, хэш становится бесполезным.

Подводя итог: Если вы хотите максимального возникновении проблем во всех ситуациях, держать дактилоскопии и хеширование, но после вашего защищенную строку легко распознать, сохранить свой маркер частная это время. Теоретически, даже если ваш маркер находится под угрозой 'секрет-соль' будет по-прежнему обеспечивают защиту, но только до тех пор, как ваш код является безопасным. Если ваша файловая система взломана или источников, на ваш веб-сайт здания общественного нельзя полагаться на 'секрет-соль' в одиночку. Не зависят от того, прячется он, 'безопасность через незаметность-это плохая практика.

3) как правило, вы не должны зависеть от IP, чтобы оставаться последовательным в сессии. Это потому, что для многих легальных пользователей ИС постоянно меняется, это может быть потому, что они за балансировки корпоративную нагрузку, они через AOL или некоторые другие прокси-сети. Возможное решение состоит в наблюдении за ИС сеанса и, если он согласуется, скажем, 10 страниц, то резонно предположить, что он будет оставаться последовательной в будущем. Вот только тогда вы начинаете делать проверку на нем. Тем не менее, хранить его временно в БД еще можно было использовать, например. для входа так, чтобы можно было проанализировать, что происходит, если идет атака или так.

4
ответ дан 25 августа 2011 в 07:08 Источник Поделиться

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

Как правило, требуется, чтобы данные были частная или не частная, но и в случаях, которые вы, возможно, хотите, чтобы она частная, но не нужно это частная из-за отсутствия ценности и полезности, есть еще одно соображение в безопасности выполнения: неплотности абстракции

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

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

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

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

2
ответ дан 25 августа 2011 в 11:08 Источник Поделиться