문제

XSS 공격을 피하기 위해 레일에서 출력 HTML을 소독하는 가장 좋은 솔루션은 무엇입니까?

두 가지 옵션이 있습니다 : White_list 플러그인 또는 Sanitize Helper의 Sanitize Method http://api.rubyonrails.com/classes/actionview/helpers/sanitizehelper.html . 오늘까지 White_list 플러그인이 더 잘 작동했고 과거에는 Sanitize가 매우 버그가 많았지 만 핵심의 일부로 개발 중이고 잠시 동안 지원 될 것입니다.

도움이 되었습니까?

해결책

H 헬퍼 방법이 여기서 작동한다고 생각합니다.

<%= h @user.profile %>

이것은 각도 괄호를 피하고 내장 된 JavaScript를 중화시킵니다. 물론 이것은 또한 사용자가 사용할 수있는 형식을 제거합니다.

서식을 원한다면 Markdown을보십시오.

다른 팁

개인적으로 저는 웹 앱에서 HTML 항목을 수락하는 것이 작은 결정이 아니라고 생각합니다. 원하는만큼 흰색/블랙리스트 태그를 테스트 할 수 있지만 올바른 중첩을 테스트하지 않으면 누군가는 일련의 닫기 태그를 입력 할 수 있습니다.

</td></tr></span></div>

그리고 당신의 레이아웃을 정말로 엉망으로 만들었습니다.

나는 보통 사람들에게 텍스타일과 같은 것을 마크 업에 들어갈 수 있도록 줄 것입니다. 오히려 HTML 구문 분석보다 비즈니스 로직 작업을하는 데 시간을 보내기 때문입니다.

물론,이 텍스트 항목이 앱에 더 근본적이라면 (예를 들어 StackoverFlow를위한 것과 같이) 직접 손을 댈 때 더 많은주의를 기울여야 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top