我刚刚根据the docs
配置了导轨以使用CSP我的确切配置如下
Rails.application.config.content_security_policy do |policy|
policy.default_src :self, :https
policy.font_src :self, :https, :data
policy.img_src :self, :https, :data
policy.object_src :none
policy.script_src :self, :https
policy.style_src :self, :https
end
# TODO: Remove this when ready to use CSP
Rails.application.config.content_security_policy_report_only = true
然后我将csp_meta_tag
添加到布局中的<head>
现在,当我启动应用程序时,我可以看到有很多关于CSP违规的报告。在我的苗条模板中,有一些javascript:
标签,我希望CSP自动允许所有这些标签。这似乎是可行的,但我不太确定如何配置它以这种方式工作。
我想保持内联脚本保护处于启用状态,但是使用可用方法在我的应用程序中允许内联脚本,即使这意味着向内联脚本的每个实例添加标签或其他内容。
答案 0 :(得分:0)
要允许内联脚本,您可以执行以下操作。
uint8_t* find_function_end(uint8_t* function)
{
while (true)
{
auto opcode_size = x86disassembler::opcode_size(function);
// Failed to get opcode size
if (!opcode_size)
return nullptr;
// Search for the following opcodes:
// C3 - ret
// CB - ret
// C2 iw - ret imm16
// CA iw - ret imm16
if ((*function == 0xC3 || *function == 0xCB) && opcode_size == 1 ||
(*function == 0xC2 || *function == 0xCA) && opcode_size == 3)
return function;
function += opcode_size;
}
return nullptr;
}
资料来源:
https://bauland42.com/ruby-on-rails-content-security-policy-csp/
https://rorsecurity.info/portfolio/content-security-policy-csp-strategy