2011-08-03 4 views
1

저는 프레임 워크에 익숙해지는 방법으로 Yesod를 사용하여 저의 (꽤 간단한) 웹 사이트를 다시 작성했습니다. 그 중 일부는 단순하지만 정적 인 (그러나 형식화 된) 컨텐츠를 제공하는 것을 포함합니다. 모든 사용자 입력 "는 XSS-살균 패키지 덕분에이 책이 말하는 것처럼 그것은, 간단한 서식을 허용하고Yesod의 nicHtmlField를 수정하는 또 다른 방법이 있습니까?

http://www.yesodweb.com/book/forms

: 나는 Yesod 책에서 설명하는 nicHtml 필드를 사용하기로 결정 수행 XSS 공격이없는 것으로 확인되고 보장됩니다. "

그러나 모두 좋지 않습니다. 일부 서식 지정은 필드에 입력 할 때 작동하는 것으로 보이지만 항목과 제출 사이의 어떤 부분은 지워집니다. 특히, 양식은 '스타일'속성에 포함 된 CSS를 사용하여 가운데 텍스트와 같은 작업을 수행하며,이 CSS 기반 서식 지정 요소는 사라지게됩니다.

필자는 print 문을 사용하여 내 코드가 아닌 것을 확인했습니다. 이후 xss-sanitize는 포함 된 CSS가 마음에 들지 않아 그것을 제거하지 않는다고 가정합니다. sanitizeBalance에 대한 호출을 제거하기 위해 Yesod.Form.Nic을 수정하면 문제가 해결 된 것으로 보입니다.

정적 인 페이지를 편집 할 때 신뢰할 수있는 사용자 (즉, 지금은 내게 있어야 함)가 필요하므로 여기에 그대로두면 좋을 것입니다. 그래서 나는 끔찍한 점을 확인하는 것에 별 관심이 없습니다. 그러나 그것은 마치 해킹 인 것처럼 느껴져서 제 질문은 -이 문제를 둘러싼 다른 방법이 있습니까? 또는 Yesod에 대해 깨진 HTML 편집기 필드를 제공하지 않는 다른 패키지가 있습니까?

+0

이 소리는 Yesod에서 해결해야합니다. [이슈 트래커] (https://github.com/yesodweb/yesod/issues)에보고 할 수 있습니다. – hammar

답변

1

Yesod 문제 추적기에 버그를 제출 하시겠습니까? 우리가 사용하는 편집기에 상관없이 편집기를 통해 기본 CSS를 허용해야한다고 생각합니다. 신뢰할 수있는 사용자의 경우 지금 NicEdit 필드 유형을 찾고 필터링되지 않는 유사한 유형을 만들 수 있습니다. 아마도 우리는 그런 분야를 만들어야 할 것입니다.

+0

에서 살펴보기 버그 보고서를 보내 드리겠습니다. Yesod.Form을 이미 수정했습니다. 제 자신의 프로젝트에서 이런 방식으로 닉합니다. sanitizeBalance에 대한 호출을 제거하는 것은 한 줄로 변경되었습니다. – chrisdb

+0

업데이트 : 이제 github에 흰색으로 나열된 CSS 스타일이 허용됩니다. 새로운 패키지 버전이 곧 출시 될 예정이며, Yesod는 적어도 0.9 버전에서 사용할 예정입니다. –

1

우리는 실제로 Yesod 웹 사이트에서 사용할 수있는 다른 가능한 리치 텍스트 편집기를 찾고 있습니다. 그래서 우리가 사용하는 모든 것은 yesod-form의 모듈로 끝날 것입니다. 가장 최근에 그렉 (Greg)은 Aloha editor을 지적했는데, 언뜻보기에는 꽤 멋있었습니다.

+0

nicHTML 필드의 문제점을 알고 있었나요? 그렇다면 책의 예제로 사용하지 않는 것이 좋습니다. 적어도 지금은 Yesod와 함께 일부 서식이 올바르게 작동하지 않는다는 사실을 언급하지 않고서도 좋습니다. – chrisdb

+0

아니, 제기하는 문제는 알려지지 않았으므로, 우리는 Yesod 사이트에서 완전히 다른 버그를 만났습니다. 비교적 최근에 발견 된 것이므로 어디에도 업데이트하지 않았습니다. –

+0

@MichaelSnoyman, [Redactor] (http://imperavi.com/redactor/) –