Форум программистов, компьютерный форум, киберфорум
PHP: Yii, Yii2
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
3 / 3 / 2
Регистрация: 05.01.2013
Сообщений: 264

При смене PHPSESSID генерится новая сессия, кончаются inode

10.09.2019, 18:34. Показов 3644. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Когда в браузере меняешь PHPSESSID, генерируется новая сессия и создается файл сессии в соответствующей папке. Если делать это по скрипту, папка может переполниться, кончатся inodes и весь сервак ляжет, как данную проблему зарешать?
1. Можно, конечно. уменьшить время жизни неактивных сессий до дня или двух, но вариант не очень.
2. Если установить enableAutoLogin в false, то при смене PHPSESSID юзера просто разлогинивает, но я не знаю как это в целом повлияет на юзабельность сайта. Самое грамотное как по мне, но только как сделать максимально безболезненно для юзеров?
3. Можно ли увеличить inodes для тома? Но это не совсем решение, скорее костыль.
Ваши идеи по этому поводу?
В чем цель данного действия, чего хакер(школьник?) пытается достичь? Как называется подобный вид атаки?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.09.2019, 18:34
Ответы с готовыми решениями:

Почему при переходе на новую страницу создается новая сессия?
При переходе на новую страницу сессия не сохранняетса а создаетса новая сессия проверял по id сессии

session.referer_check = 1, а при обновлении всеравно появляется новая сессия
ввожу в ПХПточкаИНИ session.referer_check = 1, а при обновлении всеравно появляется новая сессия!!!! Мне завтра этот сайт здавать... а...

IIS. На сайте даже просто при обновлении страницы начинается новая сессия!
Такая проблема. На сайте даже просто при обновлении страницы начинается новая сессия!

5
Заблокирован
12.09.2019, 23:22
Цитата Сообщение от PhpNewbie Посмотреть сообщение
кончатся inodes и весь сервак ляжет
Очень интересно. У меня как-то в папке mod-tmp собралось несколько миллионов файлов сессий за продолжительное время. Случайно это обнаружил. Не было настроено удаление старых файлов сессий. А сервер работал без проблем. Сколько же надо, что бы положить сервер? А точно создается новый файл? Может переписывается существующий при удалении сессионной куки?

Добавлено через 4 минуты
Да... забыл сказать. Когда хостер настроил удаление старых файлов сессий - сайт стал подвисать. Я изменил владельца папки и удаляю счас старые файлы переодически вручную скриптом. Ориентируюсь на время создания файла. Сутки побыл на сервере - пошел вон)
0
3 / 3 / 2
Регистрация: 05.01.2013
Сообщений: 264
13.09.2019, 20:10  [ТС]
Цитата Сообщение от Rich Froning Посмотреть сообщение
Очень интересно. У меня как-то в папке mod-tmp собралось несколько миллионов файлов сессий за продолжительное время. Случайно это обнаружил. Не было настроено удаление старых файлов сессий. А сервер работал без проблем. Сколько же надо, что бы положить сервер? А точно создается новый файл? Может переписывается существующий при удалении сессионной куки?
Ну он лег в том плане, что кончились INODE перестали создаваться новые сессии, юзеры не смогли логиниться, все стало дико глючить, я боюсь, что и с БД могли проблемы быть, да с чем угодно. Это еще хуже чем просто положить. Дело не в настройках, а в том, что когда юзер меняет в браузере sessid сессия перегенерируется, создается новый файл и юзер уже логинится под новой сессией, а старая остается на 2 недели, потому что настройки на 2 недели по дефолту стоят.
Почему так - хз, возможно юзер юзал глючного бота, который логинился по 5 раз в секунд и каждый раз переписывал сессию, а возможно он пытался спецом что-то там получить. В теории ведь даже если подобрать PHPSESSID нельзя спереть чужую сессию? Просто потому что аутенфикация происходит еще и по ключу в __identity в yii?
Меня больше интерсует, как правильно настроить YII2 чтобы такой фигни не было?
Пока юзаю как временную меру подобный скрипт каждые n секунд:
Bash
1
/usr/bin/find /var -wholename "*/MYPATH/data/mod-tmp/*" -type f -cmin +5000 -print0 | xargs -r -0 rm
1
Заблокирован
14.09.2019, 20:31
Я пару раз в день запускаю вручную этот скрипт, когда захожу проверить сайт
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function clear_old_files(){
 
$expire_time = 300*12*9; // Время через которое файл считается устаревшим (в сек.)
 
$dir = '/var/www/user/data/mod-tmp/';
if (is_dir($dir)) {
// открываем каталог
if ($dh = opendir($dir)) {
// читаем и выводим все элементы
// от первого до последнего
while (($file = readdir($dh)) !== false) {
 
// текущее время
$time_sec=time();
// время изменения файла
$time_file=filemtime($dir . $file);
// тепрь узнаем сколько прошло времени (в секундах)
$time=$time_sec-$time_file;
 
$unlink = '/var/www/user/data/mod-tmp/'.$file;
 
$size = filesize($unlink);
if (is_file($unlink)){  
 
if ($time>$expire_time || $size < 2){  //$size < 2 - иногда создаются пустые файлы и их тоже удаляю.    
 
if (unlink($unlink)){
 
echo "Файл $unlink удален<br />";
 
}
else {
  echo 'Ошибка при удалении файла<br />';
  }
 
}    
}
 
}
// закрываем каталог
closedir($dh);
   }
 }
 
}
 
clear_old_files();
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Дело не в настройках, а в том, что когда юзер меняет в браузере sessid сессия перегенерируется, создается новый файл и юзер уже логинится под новой сессией, а старая остается на 2 недели, потому что настройки на 2 недели по дефолту стоят.
Настройки можно изменить. А вот эту дыру в защите не мешало бы исправить. Сессионную куку удалить может любой, а вот запись в базе его айпи юзер уже не удалит. Подумай над этим.

Добавлено через 1 минуту
Ставлю тебе спасибо за хорошую идею. В следующий раз если мне не понравиться сайт - попробую его переполнить файлами сессий. А вдруг получиться
0
3 / 3 / 2
Регистрация: 05.01.2013
Сообщений: 264
15.09.2019, 17:24  [ТС]
Цитата Сообщение от Rich Froning Посмотреть сообщение
Настройки можно изменить. А вот эту дыру в защите не мешало бы исправить.
А как ее исправить? Это дефолтный класс user yii2 так работает, в нем дыра, ну либо я что-то не настроил, поэтому и спрашиваю здесь, вроде тематический раздел форума. Какие есть идеи по поводу удаления этой дыры? Я так понимаю, что время от времени SESSID в браузере сам по себе меняется, когда его закрываешь, например, потому что каждый день новый сессайди, соответственно, если отключить autoLogin в yii, каждый раз придется вручную логиниться, что не есть гуд. А как отличить браузерную смену сессий и специальный абуз? Ограничить как-то автогенерируемое количество сессий в день на юзера?
Цитата Сообщение от Rich Froning Посмотреть сообщение
а вот запись в базе его айпи юзер уже не удалит
А поподробней можно? Я не понимаю о чем речь. Твой скрипт тоже просто удаляет файлы сессий, по сути делает то же самое, что и мой баш скрипт.
0
Заблокирован
15.09.2019, 21:39
Цитата Сообщение от PhpNewbie Посмотреть сообщение
А поподробней можно?
Ну, вот, например, такая логика. Перед тем как устанавливать сессию, проверяется, была ли запись в базе юзера с таким же айпи. Если не было - устанавливается сессия и делается запись. Можно продумать и дополнительные условия. Таблицу в базе тоже потом придется переодически чистить или удалять старые записи. У меня есть похожая таблица, но только для немного других целей.
И еще. Я так понимаю, что это какой-то один недоброжелатель этим занимается. Можно проверить логи посещений. Так же вычислить этот айпи. Правда, потом придется блокировать целый диапазон айпишников, если у него он динамический. Пройдет время... ему надоест.. и уберешь эту блокировку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.09.2019, 21:39
Помогаю со студенческими работами здесь

Проблема с IIS под Win2K. При переходе от одной страницы приложения каждый раз стартует новая сессия.
Странные проблемы с IIS под Win2K Professional. При переходе от одной страницы приложения каждый раз стартует новая сессия. Ввиду чего...

Другие сети, мои, видны.Но при попытки к ним кончаются тем, что переподключается посторонняя сеть.
Здравствуйте. Я не очень хорошо разбираюсь в беспроводных сетях. Лучше в проводных ;) Дело в следующем. Есть нетбук ПаккардБелл под ХР....

О СТРУКТУРЕ INODE и потоках
ВСЕМ ПРИВЕТ, проблемка. Перерыл весь гугл и яндекс, несколько книг по системному ПО, вроде стало ясно что такое структура айнод. Осталось...

Не генерится превьюшка
Всем привет! Подскажите, что не так в моем скрипте? Задача такая - закачать изображение в нужную папку с проверками, переименовать его,...

Каптча не генерится
&lt;img src=&quot;/captcha/captcha.php&quot; alt=&quot;&quot;/&gt; - вывод каптчи сам код каптчи: session_start(); $count_symbols=5; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru