CSP不接受内联脚本哈希或nonce



我正在开发一个Flask应用程序,它使用Flask Talisman来合并CSP。我想在我的一个模板中创建一个内联脚本,而不是将"不安全的内联"添加到CSP的"script src"数组中,这可能对XSS攻击有害,我想使用哈希或nonce来允许脚本。我在Opera上的开发工具中复制了控制台错误消息中给出的哈希,并将其放置在CSP的"script src"数组中(在init.py文件中(。然而,由于某种原因,CSP不会接受哈希,我不知道如何修复它。我也用nonce尝试过,但也出现了同样的问题。这是控制台输出(出于安全原因,我删除了哈希(:

The source list for Content Security Policy directive 'script-src' contains an invalid source: 'sha256-(hash goes here)'. 
It will be ignored.

这是我在init.py:中的CSP

csp = {
"default-src": [
"'self'",
'https://www.youtube.com',
'https://img.youtube.com'
],
'script-src': [ 'sha256-(hash goes here)',
'https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js',
'https://code.jquery.com/jquery-3.3.1.slim.min.js',
'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js'],
'style-src': ["'self'",'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css']
}

hashnonce需要用引号括起来,所以应该替换它:

'script-src': [ 'sha256-(hash goes here)',

这个:

'script-src': [ "'sha256-(hash goes here)'",

类似于包含'self'的方式。

还要注意的是,flask talisman内置了nonce支持,因此不需要手动指定。它将自动添加。请参见此示例:https://github.com/GoogleCloudPlatform/flask-talisman#example-6

相关内容

  • 没有找到相关文章

最新更新