Sadece Rails ile çalışmaya başladım, bu yüzden yeni kullanıcı kodumdaki olası güvenlik açıklarını öğrenmek için Brakeman kullanıyorum. Yüksek güven benim show.js.erb
dosyasında aşağıdaki kodu hakkında uyarı "Dinamik Yol Render" atıyor: Aslında hiçbir sürpriz var, bu bir sorun oldu beklenenRaylar Brakeman uyarı: Dinamik Render Path yanlış alarmı?
$('#media-fragment').html('<%= escape_javascript(render(params[:partial])) %>');
. Bu yüzden aşağıda olarak değiştirdim:
# 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)) %>');
ben kod, artık güvende olduğunu Brakeman hala bu mutsuz olduğuna inanıyoruz rağmen. Kullanıcı girişine dayalı kısmi renderlemeyi kontrol etmek için daha akılcı bir yol var mı?
manken niteliklerini için çalışmaya bekçi koşulunu almak gibi olamaz. Benim modelimde bir yöntem var: "def sanitized_partial_path; eğer ["foo", "bar"].? (öznitelik) içerirse; "/ Yol/# {nitelik}"; Son olarak '' ve hala yanlış pozitif verir. – Nick
@Nick Brakeman, "sanitized_partial_path" içeriğine bakmayacak (gelecekte Brakeman Pro'nun iradesi olmasına rağmen). Cevabımdaki örnek, daha sonra görünümde kullanılan denetleyici eyleminde bir örnek değişkene atanması nedeniyle çalışır. – Justin