Почему использование локальных потоков в Django плохо?

Я использую локальные потоки для хранения текущего пользователя и объектов запроса. Таким образом, я могу иметь легкий доступ к запросу из любой точки программы (например, динамические формы) без необходимости их передачи.

Чтобы реализовать локальное хранилище потоков в промежуточном программном обеспечении, я следовал учебному руководству на сайте Django:http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser?version=18

Этот документ с тех пор был изменен, чтобы предложить избегать этой техники:http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser?version=20

Из статьи:

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

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

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

Может кто-нибудь объяснить проблему безопасности? Я спрашивал многих людей, как они взломали бы мое приложение, если бы они прочитали эту статью и знали, что я использую локальные потоки, но никто не смог мне сказать. Я начинаю подозревать, что такого мнения придерживаются пуристы, разделяющие волосы, которые любят явно передавать объекты.

Ответы на вопрос(3)

Ваш ответ на вопрос