SESSION_COOKIE_SECURE не шифрует сеанс - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь обеспечить безопасность моего веб-приложения Flask.В качестве первого шага я собираюсь сделать свой сеансовый cookie-файл безопасным, установив для SESSION_COOKIE_SECURE значение true.

Но после того, как я получу свой сеансовый cookie-файл от «inspect element», я могу легко декодировать сессионный cookie-файл, и нетразница, добавляю ли я SESSION_COOKIE_SECURE или нет.

Вот мой код:

from flask import Flask, request, app, render_template, session, send_file, redirect

MyApp = Flask(__name__)
MyApp.secret_key = "something"
application = MyApp  
if __name__ == "__main__":
    MyApp.debug = False
    MyApp.config.update(
        SESSION_COOKIE_SECURE=True,
        SESSION_COOKIE_HTTPONLY=True,
        SESSION_COOKIE_SAMESITE='Lax',
    )
    MyApp.config["SESSION_PERMANENT"] = True
    MyApp.run()

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

    MyApp.config['SESSION_COOKIE_SECURE'] = True

Когда я пытаюсь напечатать SESSION_COOKIE_SECURE, я получаю эту ошибку

Traceback (most recent call last):
  File "...", line ..., in <module>
    print(MyApp.session_cookie_secure)
 AttributeError: 'Flask' object has no attribute 'session_cookie_secure'

Моя версия Flask - 1.0.2, и я использую HTTPS.

1 Ответ

0 голосов
/ 24 сентября 2018

Настройка SESSION_COOKIE_SECURE не шифрует значение cookie, нет.Когда установлено, это заставляет Flask создавать куки с установленным флагом «Безопасный» .Это означает, что браузер может вернуть куки-файл на сервер только через зашифрованное соединение , и ничего более.Параметр ничего не меняет в значении самого файла cookie.

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

Обычно вы этого не делаете необходимо для шифрования файла cookie сеанса, если вы а) используете HTTPS (который шифрует данные от посторонних) и б) защищаете свое веб-приложение от атак XSS.Без вектора атаки XSS злоумышленники в любом случае не смогут получить доступ к вашему содержимому файлов cookie.

Вам, конечно, не нужно делать это здесь, поскольку SESSION_COOKIE_HTTPONLY означает, что браузер никогда не будет открывать файл cookie.в JavaScript, и только кто-то с полным доступом к браузеру может видеть значение cookie.

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

Если по какой-то причине вы не можете сохранить такие секреты в файле cookie сеанса и не хотите их приниматьчто конечный пользователь может прочитать эти данные, тогда вам придется самостоятельно зашифровать cookie или использовать альтернативный поставщик сеансов для Flask, например EncryptedSession.


Что касается ошибки атрибута: только несколько параметров конфигурации доступны как атрибуты для объекта Flask.Чтобы напечатать произвольные параметры конфигурации, используйте объект app.config:

print(MyApp.config['SESSION_COOKIE_SECURE'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...