Безопасно ли использовать $ _SESSION для сохранения корневого пути для ВКЛЮЧЕНИЙ?

#php

#php

Вопрос:

Безопасно ли в моей форме входа или после входа в систему использовать $_SESSION['path'] для сохранения абсолютного пути к моей корневой папке, а затем вызывать папку в другом месте моего проекта? Используя: include_once($_SESSION['path'] . "folder/file.php") .

Комментарии:

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

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

3. Спасибо, Джонатан. Когда вы говорите «Использовать базу данных», вы имеете в виду сохранить абсолютный путь в моей базе данных, вызвать его в моем проекте и сохранить в переменной сеанса?

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

5. Да, это просто для сохранения абсолютного пути, чтобы я мог использовать его на нескольких страницах при включении файлов. Нет пользовательского ввода.

Ответ №1:

Если путь сеанса не зависит от пользователя, и вы знаете, как вычислить значение, то почему бы не применить тот же метод в другом месте? OTOH если вы используете это как метод для предоставления разных поведений разным пользователям, то я бы настоятельно рекомендовал вам пересмотреть свою стратегию — это плохо масштабируется и не приведет к хорошо спроектированному решению. Потенциально это может привести к уязвимостям LFI в вашем коде (но только при наличии других дефектов) или к эксплойтам типа TOCTOU.

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