2014-11-27 2 views
0

나는 DRY를 유지하기 위해 항목 이름 만 변경하는 동등한 항목이 많은보기를 가지고 있는데, 이것을 부분적으로 리팩토링했습니다. 내 질문은, 만약 내가 type_oil, 문자열 변수를 부분에 보내면 평가판은 eval("#{type_oil}_path") 공개적으로 노출 될 것인가? 이것이 보안 문제 일 수 있습니까?레일은 변수를 전달하고 평가하는 동작을 렌더링합니다. 안전합니까?

보기/controller_name/oils.html.haml

#oils-content 
    -# oils_list is a list of strings 
    - oils_list.each do |oil| 
    = render "controller_name/oils_item" , type_oil: oil 

보기/controller_name은/_oils_item.html.haml

.item 
    %h2= t("oils.#{type_oil}.front_header") 
    %p= t("oils.#{type_oil}.front_body") 
    = link_to t("oils.#{type_oil}.link"), eval("#{type_oil}_path") 

답변

0

그것은 어떤 방식으로 대중에게 노출되지 않습니다. Ruby가 사용자의 HTML (또는이 경우에는 HAML)과 같은 프런트 엔드 언어라고 생각하면 혼란 스러울 것입니다. 그렇지 않습니다. 보기에있는 모든 Ruby는 HTTP 응답에 대한 내용을 동적으로 생성하기 때문에 서버에서 응답을 보내기 전에 실행됩니다.

관련 문제