【发布时间】:2016-11-01 03:20:30
【问题描述】:
我想通过活动的 Content-Security-Policy 为我的应用程序启用内部 Rails :back 链接功能。
CSP:
%meta{"http-equiv" => "Content-Security-Policy", "content" => "default-src *;"}
示例链接:
= link_to 'Back', :back
# <a href="javascript:history.back()">Back</a> *
* Rails 链接到引用者,并且只有在没有设置引用者时才回退到 JS。
我怎样才能只将这个很小的history.back() javascript 列入白名单?
我尝试按照https://www.w3.org/TR/2015/CR-CSP2-20150721/#script-src-hash-usage 中所述设置异常并生成所需的哈希,如下所示:
echo -n "history.back()" | openssl dgst -sha256 -binary | openssl enc -base64
结果:
%meta{"http-equiv" => "Content-Security-Policy", "content" => "default-src *; script-src 'self' 'sha256-LdlORHyUW/rwezK0l13nW+IwcZmi78eWOCBjewMWRr4='"}
但 Chrome 控制台显示相同的错误,这意味着哈希无效:
拒绝执行 JavaScript URL,因为它违反了以下内容 内容安全策略指令:“script-src 'self' 'sha256-SmahML3R6+R4SRnsB6tEJ8Z4OVa4Qhk7A/gv3eAiG6s='”。 'unsafe-inline' 关键字、哈希 ('sha256-...') 或随机数 ('nonce-...') 是启用内联执行所必需的。
【问题讨论】:
标签: javascript ruby-on-rails ruby-on-rails-4 content-security-policy