2011-01-23 6 views
0

필자는 레일 애플리케이션에 사용하려는 "네임 스페이스"사용자 정의 태그 (반경 젬으로 개발 됨)가 있습니다. xss- 공격을 막기 위해 sanitize gem을 사용하고 싶습니다만, 네임 스페이스를 어떻게 설정하는지에 대한 설명은 없습니다. 가능한 방법이 있습니까?sanitize 및 네임 스페이스

답변

1

sanitize gem은 네임 스페이스를 지원하지 않습니다. 간략하게 sanitize 코드를 살펴보면, 엘리먼트를 지우는 transform 클래스 나 html을 실제로 파싱하는 방식 모두 Nokogiri (XML 파서의 기본이되는 sanitize)는 네임 스페이스를 인식하고 처리하는 데 필요한 정보를 제공하지 않으므로, 이것을 지원하면 가능하지 않을 것입니다.

접두사가 붙은 네임 스페이스가없는 태그가 sanitize에 표시 될 수 있으므로 다른 태그와 충돌하지 않는 맞춤 이름이있는 경우 해당 이름을 지정할 수 있지만 현재 상태는 그대로 유지됩니다. 작성하면 네임 스페이스 관련 태그를 필터링 할 수 없습니다.

0

내가 아는 한 sanitize gem은 자바 스크립트와 HTML을 컨트롤러의 params에서 필터링합니다. 아마 내가 마지막으로 본 이후 확장되었습니다.

아니요, 대부분의 보석을 네임 스페이스로 지정할 수 없습니다. 원숭이 패치가있는 래퍼를 넣을 수있는 몇 가지 해킹이 있습니다. 필요한 경우 Google "ruby namespace collision"을 사용하면 다음과 같은 결과를 얻을 수 있습니다. How to resolve Rails model namespace collision

+0

나는 당신이 나를 이해하지 않는다고 생각한다. Reit - sanitize는 레일스 애플리케이션에서 (뷰에서 컨트롤러로) 입력 텍스트를 필터링하는 데 사용하지만, 불행히도 와 ​​같은 커스텀 태그로 작업하는 방법은 없습니다. –