Closed
Description
Describe your context
python 3.8
dash 2.0.0
dash-bootstrap-components 1.0.0b3
dash-core-components 2.0.0
dash-html-components 2.0.0
dash-table 5.0.0
Describe the bug
I'm trying to setup a dash with flask along with talisman like so:
server = flask.Flask(__name__)
# Setup the Dash app
app = dash.Dash(
"Test App",
suppress_callback_exceptions=True,
external_stylesheets=[dbc.themes.BOOTSTRAP],
server=server,
)
flask_talisman.Talisman(
server,
content_security_policy= {
"default-src": [
"'self'",
...
],
"style-src": [
"'self'",
...
],
"img-src": [
"'self'",
...
],
"script-src": [
"'self'",
...
] + app.csp_hashes(),
}
)
But the following errors occur in Firefox 92.0:
Uncaught EvalError: call to eval() blocked by CSP
js http://localhost:8050/_dash-component-suites/dash/dash-renderer/build/dash_renderer.v2_0_0m1633506978.dev.js:7383
__webpack_require__ http://localhost:8050/_dash-component-suites/dash/dash-renderer/build/dash_renderer.v2_0_0m1633506978.dev.js:7440
<anonymous> http://localhost:8050/_dash-component-suites/dash/dash-renderer/build/dash_renderer.v2_0_0m1633506978.dev.js:7523
<anonymous> http://localhost:8050/_dash-component-suites/dash/dash-renderer/build/dash_renderer.v2_0_0m1633506978.dev.js:7527
dash_renderer.v2_0_0m1633506978.dev.js:7383:1
Some cookies are misusing the recommended “SameSite“ attribute 2
Uncaught ReferenceError: DashRenderer is not defined
<anonymous> http://localhost:8050/:30
localhost:8050:30:16
Content Security Policy: The page’s settings blocked the loading of a resource at eval (“script-src”). dash_renderer.v2_0_0m1633506978.dev.js:7383
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). input.css:38:47
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). input.css:20:12
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). logout.css:40:47
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). logout.css:20:12
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). [email protected]:40:47
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). [email protected]:20:12
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). _datepicker.css:40:47
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). _datepicker.css:20:12
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). [email protected]:40:47
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”). [email protected]:20:12
And the only way I could get them to work is by setting the content security policy like so:
content_security_policy = {
"default-src": [
"'self'",
...
],
"style-src": [
"'self'",
"'unsafe-inline'",
...
],
"img-src": [
"'self'",
...
],
"script-src": [
"'self'",
"'unsafe-eval'",
...
] + app.csp_hashes(),
}
Note the 'unsafe-eval' in the script-src directive and the 'unsafe-inline' in the style-src directive.
However this is bad
The reason is that all of those files have either an Python eval()
statement in them or, in the case of the stylesheets, are inserting style elements dynamically.
Expected behavior
Should be able to define CSP without having to use 'unsafe-eval' and 'unsafe-inline'
Metadata
Metadata
Assignees
Labels
No labels