Итак, я только что нашел какой-то супер тревожный код одновременно в некотором классическом коде ASP, а также в некотором PHP.
Классический ASP:
Dim id
id = request.form("id")
Session(id) = id
PHP
$_SESSION[$_GET["id"]] = $_GET["id"];
Итак, что здесь может пойти не так? Обратите внимание, очевидно, я буду удалять их и использовать лучший рабочий процесс.
РЕДАКТИРОВАТЬ: Очевидными проблемами могут быть SQLi, XSS, перезапись существующих и необходимых переменных сеанса. Я действительно не знаю внутреннюю работу того, как эти языки обрабатывают переменные сессии.
РЕДАКТИРОВАТЬ 2: Я не особо обеспокоен значениями переменной сеанса, так как меня беспокоит возможность их именования. Просто любопытно, есть ли что-то сумасшедшее, что вы можете сделать с произвольными именами переменных.
Я могу установить любое количество переменных сеанса — скажем, a1 a2 a3 a4 и так далее. Это своего рода вектор атаки, верно? Атака памяти ..
Если вы когда-либо будете использовать переменные этого сеанса в запросе mysql — классический случай внедрения SQL (не большая угроза в этом случае, если у вас есть надлежащая безопасность)
Как кто-то упомянул в комментарии, если вы когда-либо повторяете переменную сеанса, существует возможность XSS (межсайтовая инъекция).
Если вы используете его в формах атак типа CSRF и много чего еще.
Зачем использовать $ _SESSION [$ GET [‘var’]], когда есть миллион других возможных вещей 🙂
Других решений пока нет …