Я хочу использовать Flask-talisman для защиты моего приложения
SELF = '\'self\''
talisman = Talisman(
app,
content_security_policy={
'default-src': [
'https://fonts.googleapis.com',
'https://cdnjs.cloudflare.com',
SELF
],
'img-src': '*',
'script-src': [
'www.paypal.com',
'https://cdnjs.cloudflare.com',
'https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js',
SELF
],
'script-src-elem': [
SELF,
'https://cdnjs.cloudflare.com',
# '\'sha256-rK9uOBOU6xGxNC0yyDvR8H+SSKlJ5zxJECCgbFv4/yQ=\'',
# '\'sha256-CaM1VBFl4RtJZ9Br0nB80ZvFXnrUk3vr/4+pScd4lMQ=\'',
# '\'sha256-BcYd5oXoLvDaktAA37B436mVSFB3DoC5aLwM1OorXAk=\'',
# '\'sha256-V68+36l83hbDfO58E+T6u2tGJGhbcpAqCEfNCD3n2qY=\'',
'www.paypal.com',
],
'style-src': [
'https://fonts.googleapis.com',
'https://cdnjs.cloudflare.com',
'https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js',
SELF
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=\'',
# '\'sha256-Y5HGV3cmFL1QmdV9FMkQjm7MR7FR+stNxbf9+GKET60=\'',
# '\'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=\'',
# '\'sha256-lMuNwjy4Fw1In/+Nadl5ZPm5gAa4t2jbLUL/ybM9rzU=\'',
# '\'sha256-lMuNwjy4Fw1In/+Nadl5ZPm5gAa4t2jbLUL/ybM9rzU=\'',
# '\'sha256-7/kvZYAvW6o7J2rMfMbFOsaTsThj6/tBw+lPsMSniSA=\'',
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-IF8jfWBSZfCEeoCvSHf23OXvf0RDYWltkvNrcEzpDBE=\'',
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-IF8jfWBSZfCEeoCvSHf23OXvf0RDYWltkvNrcEzpDBE=\'',
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-0rOxHPZ4bWknhNsyCN7zXu9gXxyWLKCvfWr1ZAuyzgY=\'',
# '\'sha256-kg8NTQKmLiYaDjmboMwJGfasUnDZfDeIJ7aXV4r5BVc=\'',
# '\'sha256-VPm872V2JvE+vhivDg7UeH+N9a9YzzqGGow5mzY48hc=\'',
# '\'sha256-i/PynXyovXdKWqaHlhds+BOU5Iis84bZpECM9wKzq+U=\'',
# '\'sha256-VPm872V2JvE+vhivDg7UeH+N9a9YzzqGGow5mzY48hc=\'',
# '\'sha256-VPm872V2JvE+vhivDg7UeH+N9a9YzzqGGow5mzY48hc=\'',
# '\'sha256-IVUmBkRCdvydC0Uh8tn6KMTNiZNvKrJOMResPyDMax8=\''
],
'style-src-elem':[
SELF,
'https://fonts.googleapis.com',
'https://cdnjs.cloudflare.com',
'https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js',
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=\'',
# '\'sha256-Y5HGV3cmFL1QmdV9FMkQjm7MR7FR+stNxbf9+GKET60=\'',
# '\'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=\'',
# '\'sha256-lMuNwjy4Fw1In/+Nadl5ZPm5gAa4t2jbLUL/ybM9rzU=\'',
# '\'sha256-lMuNwjy4Fw1In/+Nadl5ZPm5gAa4t2jbLUL/ybM9rzU=\'',
# '\'sha256-7/kvZYAvW6o7J2rMfMbFOsaTsThj6/tBw+lPsMSniSA=\'',
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-IF8jfWBSZfCEeoCvSHf23OXvf0RDYWltkvNrcEzpDBE=\'',
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-IF8jfWBSZfCEeoCvSHf23OXvf0RDYWltkvNrcEzpDBE=\'',
# '\'sha256-AjpxHAnhAkbI3p301rAQ19y+QSGq2Jl7vv0Q7WzjR+c=\'',
# '\'sha256-0rOxHPZ4bWknhNsyCN7zXu9gXxyWLKCvfWr1ZAuyzgY=\'',
# '\'sha256-kg8NTQKmLiYaDjmboMwJGfasUnDZfDeIJ7aXV4r5BVc=\'',
# '\'sha256-VPm872V2JvE+vhivDg7UeH+N9a9YzzqGGow5mzY48hc=\'',
# '\'sha256-i/PynXyovXdKWqaHlhds+BOU5Iis84bZpECM9wKzq+U=\'',
# '\'sha256-VPm872V2JvE+vhivDg7UeH+N9a9YzzqGGow5mzY48hc=\'',
# '\'sha256-VPm872V2JvE+vhivDg7UeH+N9a9YzzqGGow5mzY48hc=\'',
# '\'sha256-IVUmBkRCdvydC0Uh8tn6KMTNiZNvKrJOMResPyDMax8=\''
],
'font-src': '*',
'connect-src':'*',
'frame-src': 'www.sandbox.paypal.com'
},
content_security_policy_nonce_in=['script-src','style-src','style-src-elem','script-src-elem','default-src']
)
Я всегда получаю сообщение об ошибке, в котором встроенный стиль может быть встроен, поскольку он нарушает CSP.
Refused to apply inline style because it violates the following Content Security Policy directive: "style-src https://fonts.googleapis.com https://cdnjs.cloudflare.com https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js 'self' 'nonce-U3i4mzwI3bQdxarcYAcYUA'". Either the 'unsafe-inline' keyword, a hash ('sha256-lMuNwjy4Fw1In/+Nadl5ZPm5gAa4t2jbLUL/ybM9rzU='), or a nonce ('nonce-...') is required to enable inline execution.
Я правильно использую хеш? или это потому, что я включаю «САМО» в белый список. в соответствии с https://www.merixstudio.com/blog/content-security-policy-flask-and-django-part-1/
Обратите внимание, что при использовании политики «self» встроенные сценарии будут блокироваться, поскольку они являются наиболее распространенным способом внедрения кода JavaScript в веб-сайт. Конечно, может использоваться политика unsafe-inline, но предпочтительнее использовать политики nonce или sha.