Настой-Талисман разбивает Настой-Бутстрап

Я хочу, чтобы мой веб-сайт всегда перенаправлялся на защищенную https-версию сайта, и я использую flask-talisman сделать это. Однако по какой-то причине добавление этой, казалось бы, не связанной строки кода нарушает flask-bootstrap форматирование на моем сайте.

Это то, что оригинал __init__.py файл и сайт выглядели как до добавления flask-talisman:

from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_bootstrap import Bootstrap
from flask_heroku import Heroku


app = Flask(__name__)
app.config.from_object(Config)
Bootstrap(app)
heroku = Heroku(app)
db = SQLAlchemy(app)
migrate = Migrate(app, db)

from app import routes, models

И это то, что __init__.py файл и сайт выглядят как после добавления flask-talisman:

from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_talisman import Talisman
from flask_bootstrap import Bootstrap
from flask_heroku import Heroku


app = Flask(__name__)
app.config.from_object(Config)
Bootstrap(app)
Talisman(app)
heroku = Heroku(app)
db = SQLAlchemy(app)
migrate = Migrate(app, db)

from app import routes, models

Изменение порядка строк Bootstrap(app) а также Talisman(app) не имеет никакого значения либо. Есть идеи? Я хочу, чтобы мой веб-сайт был безопасным, но не за счет нарушения всех форматов.

3 ответа

Это старая ветка, но ответ таков: вам нужно добавить в белый список разрешенные сайты, как в этом примере (непосредственно с веб-сайта flask-talisman):

csp = {
 'default-src': [
        '\'self\'',
        'cdnjs.cloudflare.com'
    ]
}
talisman = Talisman(app, content_security_policy=csp)

Основываясь на jrborba выше ответе jrborba, это то, что я использовал, чтобы не дать Tailsman нарушить Bootstrap и jQuery, но вам, возможно, не нужно использовать небезопасную встроенную строку, как это сделал я.

csp = {
    'default-src': [
        '\'self\'',
        '\'unsafe-inline\'',
        'stackpath.bootstrapcdn.com',
        'code.jquery.com',
        'cdn.jsdelivr.net'
    ]
}
talisman = Talisman(app, content_security_policy=csp)

в дополнение к default-src я также добавил font-src, чтобы предотвратить появление сообщения:Refused to load the font 'data:font/truetype;charset=utf-8;base64,

      csp = {
    'default-src': [
        '\'self\'',
        'cdnjs.cloudflare.com'
    ],
    'font-src': [
        '\'self\'',
        'data:',
        'cdnjs.cloudflare.com'
    ]
}
Другие вопросы по тегам