python - CSP 不接受内联脚本哈希或随机数

标签 python flask hashcode content-security-policy inline-scripting

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

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

这是我在 中的 CSP初始化 .py:
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']
}

最佳答案

A hash和一个 nonce需要用引号引起来,所以你应该替换它:

'script-src': [ 'sha256-(hash goes here)',
有了这个:
'script-src': [ "'sha256-(hash goes here)'",
类似于您如何包含 'self' .
还要注意 flask 护身符有 nonce支持内置,所以不需要手动指定。它会自动添加。请参阅此示例:https://github.com/GoogleCloudPlatform/flask-talisman#example-6

关于python - CSP 不接受内联脚本哈希或随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61085890/

相关文章:

python - tensorflow 中 "FLAGS"的用途是什么

python - 在 Django select_lated 中遵循foreignkey来填充*set变量?

python - 如何减少 JSON 中的请求时间或将字典键替换为默认键?

java - 如何计算 Java 中字符串列表中的冲突次数

python - "blocking"这个词在编程中是什么意思?

python - 赋值 : Prompt user to input their Birthmonth then input the day they were born. 打印月份名称,后跟日期

python - AWS Elastic Beanstalk - Flask 应用程序无法导入自定义模块

python - 我的 HTML 表格打印\u0027 而不是撇号

java - 良好的字符串散列函数

java - 如果我的类在 Java 中实现了可比性,我是否需要 equals 和 Hashcode 方法?