2012-05-25 3 views
0

레일 3.2.x를 사용하고 있으며 다음 코드가 표시되어 있습니다.XSS 문제없이 주소를 표시하는 방법

<%= order.address.address_array.join('<br />').html_safe %> 

주소는 address1, address2, 도시 이름, 주 이름, 국가 이름 및 우편 번호 - 표준 항목의 배열입니다.

사용자가 도시 이름에 <script>something</script.을 입력하면 내용을 html_safe으로 표시하므로 해당 자바 스크립트 코드가 실행됩니다.

보안 문제를 노출하지 않고 줄 바꿈과 주소를 표시하는 깨끗한 방법은 무엇입니까.

답변

2

당신은 가입하기 전에 당신의 주소 배열의 각 라인에 html_safe 호출해야합니다. 그것은해야 (안 테스트)처럼 보이는 :

<%= order.address.address_array.map(&:html_escape).join('<br />') %> 
+0

또한 사용자 입력 데이터 (도시 이름)를 html_safe로 표시합니다. 안좋다. 권리 ? –

+0

네, 네가 맞다고 생각해. jdoe 솔루션을 사용해 보거나 .map (& : html_safe) 대신 .map (& : html_escape)을 사용하십시오. – sailor

+0

html_escape. –

1

시도 :

simple_format(h(address)) 

그것은 스크립트를 탈출거야 다음 줄 바꿈 대신 <br/>을 추가합니다.