"<% = h […] %>"에서 "h"의 의미는 무엇입니까?
기본 스캐 폴드를 생성 할 때 show.html.erb의 디스플레이 태그에는
<%=h @broker.name %>
<%과 의 차이점을 알고 <%=있습니다. "h"는 무엇을합니까?
HTML 이스케이프. 렌더링이 HTML을 깨지 않도록 <및>와 같은 것을 숫자 참조로 변환하는 방법입니다.
<%=h실제로 두 가지 일이 발생합니다. erb 태그 ( <%=)를 열고 h모든 기호를 이스케이프하기 위해 Rails 메서드 를 호출합니다 .
이 두 호출은 동일합니다.
<%=h person.first_name %>
<%= h(person.first_name) %>
이 h메서드는 일반적으로 사용자 입력 양식에서 HTML 및 Javascript를 이스케이프하는 데 사용됩니다.
h방법의 별칭 html_escape에서 ERB :: 백분율의 클래스입니다.
Rack::Utils.escape_htmlMetal에 있고 일부 HTML을 이스케이프하려는 경우 Rack에 HTML을 이스케이프하는 방법도 있습니다 .
파티에 늦었지만 html_escape저와 같은 다른 멍청이가 무슨 일이 일어나고 있는지 이해할 수 있도록 돕기 위해 무엇 을하고 있는지에 대한 설명을 추가하고 있습니다. Rails 3 이상은 이제 모든 출력을 자동으로 이스케이프하므로 html_escape일명 h()이 필요한 상황이 훨씬 적습니다 . 가장 눈에 띄는 html_safe것은 발표자 클래스 등에서 html로 링크를 구축 할 때이 메서드 를 사용하려는 경우입니다. 예를 들면 다음과 같습니다.
#some_view.html.erb
<span><%= @user.name %></span> #This is 100% fine and will be automatically escaped by Rails 3+
#Output => <span>Brian Kunzig</span>
#Now say we want a link with html that we need preserved! OMG WHAT ARE DO??
<%=link_to "<span><i class='fa fa-user'></i>#{@user.name}</span>".html_safe #DANGER!!!
위의 링크는 심각한 문제를 일으킬 수 있으며 모든 종류의 xss (사이트 간 스크립팅) 공격에 노출 될 수 있습니다. 가장 간단한 예는 사용자가 이름을 저장하고 "<script>alert('omg');</script>"사용 html_safe하는 경우 예상 이름을 렌더링하는 모든 페이지에 'omg'라는 경고가 표시됩니다! 이것은 중요한 문제입니다. 이를 방지하려면 다음을 수행하십시오.
<%=link_to "<span><i class='fa fa-user'></i>#{h(@user.name)}</span>".html_safe #Winning!
사용자가 제공 한 잠재적으로 오염 된 데이터를 피함으로써 우리는 집이 없습니다!
h는 html_escape의 별칭입니다. 사용자 입력 양식에서 html 및 javascript를 이스케이프하는 데 일반적으로 사용되는 유틸리티 방법입니다. 렌더링이 HTML을 깨지 않도록 특수 문자를 숫자 문자 참조로 변환합니다.
예를 들어
<%= h "<p>Hello World</p>" %>
출력됩니다
<p>Hello World</p>
볼 텍스트로 단락이 적용되지 않습니다. 다음과 같이 인코딩됩니다.
<p>Hello World</p>.
참고 URL : https://stackoverflow.com/questions/296747/what-is-the-meaning-of-h-in-h
'IT TIP' 카테고리의 다른 글
| 컴파일러가 char에 대해 varargs char 오버로드보다 int 오버로드를 선호하는 이유는 무엇입니까? (0) | 2020.11.23 |
|---|---|
| com.google.android.gms.internal.zzaja의 클래스 파일을 찾을 수 없습니다. (0) | 2020.11.23 |
| Perl에서 $ 1은 무엇을 의미합니까? (0) | 2020.11.23 |
| 복제 할 수없는 버그를 어떻게 수정합니까? (0) | 2020.11.23 |
| 면도기 구문-foreach 루프 (0) | 2020.11.23 |