2008-10-18 3 views
3

레일스에서 ​​출력 HTML을 살균하는 가장 좋은 해결책은 무엇입니까 (XSS 공격을 피하기 위해)?레일에서 출력을 살균 처리

두 가지 옵션이 있습니다. white_list 플러그인 또는 Sanitize Helper의 sanitize 메소드 http://api.rubyonrails.com/classes/ActionView/Helpers/SanitizeHelper.html입니다. 나에게있어서 white_list 플러그인은 과거보다 효과적이었고 과거에는 Sanitize가 매우 버그가 있었지만 Core의 일부로 개발 중이며 잠시 지원을받을 것입니다.

답변

1

이 나는 ​​시간 도우미 방법은 여기서 일 것이라고 생각 : 이것은 꺾쇠 괄호를 탈출 따라서 임베디드 자바 스크립트를 중화합니다

<%= h @user.profile %> 

. 물론 이것은 사용자가 사용할 수있는 서식도 제거합니다.

포맷을 원하면 markdown을보십시오.

3

나는 http://code.google.com/p/xssterminate/을 권장합니다.

+0

이 솔루션은 오래된 것 같습니다. 어쩌면 더 나은 범위는 여기에 있습니다 : http://stackoverflow.com/questions/2985600/how-good-is-the-rails-sanitize-method – Purplejacket

0

개인적으로 나는 어떤 웹 응용 프로그램에서든 HTML 항목을 받아들이는 것은 작은 결정이 아니라고 생각합니다. 당신만큼 당신이 원하는대로 화이트/블랙리스트에 태그를 테스트 할 수 있습니다,하지만 당신은 올바른 중첩을 테스트하지 않는 한, 누군가가 당신의 레이아웃 예를

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

정말 혼란에 대해 닫는 태그의 일련의 입력 할 수 있습니다.

나는 보통 HTML 구문 분석보다 비즈니스 로직에 대한 작업에 시간을 소비하기 때문에 보통 마크 업을 입력하기 위해 Textile과 같은 것을 사람들에게 제공합니다.

물론이 텍스트 항목이 앱에 더 기본적인 것이라면 (예 : 스택 오버 플로우에 해당), 직접 텍스트를 입력하면 더 많은주의를 기울여야 할 것입니다.