Настой-Талисман разбивает Настой-Бутстрап
Я хочу, чтобы мой веб-сайт всегда перенаправлялся на защищенную 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'
]
}