我刚刚开始使用 Rails,所以我正在使用Brakeman来了解我的新手代码中的潜在漏洞。show.js.erb
它对我的文件中的以下代码发出高度可信的“动态渲染路径”警告:
$('#media-fragment').html('<%= escape_javascript(render(params[:partial])) %>');
我实际上预计这是一个问题,所以这并不奇怪。所以我将其更改为以下内容:
# controller:
def show
if legal_partial?
@allowed_partial = params[:partial]
else
raise StandardError, "unexpected partial request: #{params[:partial]}"
end
end
private
def legal_partial?
%w(screenshots video updates).include? params[:partial]
end
# ...
# show.js.erb
$('#media-fragment').html('<%= escape_javascript(render(@allowed_partial)) %>');
尽管我相信代码现在是安全的,但 Brakeman 仍然对此不满意。有没有更惯用的方法来控制基于用户输入的部分渲染?