2008-10-06 2 views
4

저는 고객을 위해 호스팅 된 CMS와 유사한 서비스를 시작하는 방법을 모색 중입니다.호스팅 된 CMS에 대해 HTML 마크 업을 위생적으로 처리해야합니까?

마찬가지로 고객은 사이트를 방문 할 사람에게 제공 할 텍스트를 입력해야합니다. Markdown을 사용하려고합니다. 아마도 대량의 텍스트 블록에 대해 WMD (SO가 사용하는 라이브 미리보기 미리보기)와 함께 사용할 계획입니다.

이제 html에 대한 입력 내용을 살균해야합니까? 주어진 'CMS'를 편집하는 소수의 사람들, 즉 유료 고객이 될 것이라는 점을 감안할 때, 나쁜 HTML을 제거해야합니까? 그렇지 않으면 방치해야합니까? 결국, 그것은 그들의 '사이트'는

편집 : 나는 그것을 할 것입니다 이유에 주된 이유는 그들이 자신의 자바 스크립트를 사용하자, 출력

에 대한 자신의 CSS와 div의 무엇을하지를하는 것입니다

답변

12

이 아니므로 입력을 살균 하시겠습니까?

그렇지 않으면 고객이나 자신 또는 둘 모두에게 재앙을 초대합니다.

+1

그가 제 3 자 자바 스크립트를 허용한다면, 무엇이 진정으로 안전 할 수 있습니까? –

+0

아마도 그렇지는 않지만 그는 도움을 줄 수있는 자신의 역할을 할 수 있습니다. :) – warren

1

적어도 항목을 구문 분석하면 HTML 태그의 특정 "안전한"하위 집합 만 허용됩니다.

1

입력을 항상 살균해야한다고 생각합니다. 대부분의 사람들은 처음부터 자신의 웹 사이트를 만들고 싶지 않기 때문에 CMS를 사용하며 페이지를 쉽게 편집 할 수 있기를 원합니다. 이러한 사용자는 대부분 텍스트를 위생적으로 처리하려고 시도하지 않을 것이지만 보호 조치를 통해 사용자를 보호합니다.

2

불만을 품은 직원, 고객 간 공격 또는 다른 종류의 바보 같은 행동을 다시 보호 할 수도 있습니다.

사용자 또는 뷰어에 상관없이 항상 위생적으로 처리해야합니다.

4

귀하의 질문은 묻습니다 :

"편집 : 주된 이유는 내가 할 것입니다 이유에 그것은 그들 자신의 자바 스크립트를 사용할 수 있도록, 그리고 출력에 대한 자신의 CSS와 div가 무엇을하는 것입니다."

사용자가 임의의 JavaScript를 제공 할 수 있도록 허용하면 입력 된 내용을 삭제할 필요가 없습니다. Cross-Site Scripting (XSS)의 정의는 기본적으로 "사용자가 JavaScript를 제공 할 수 있으며 일부 사용자는 불량합니다"입니다.

이제, 일부 웹 사이트는 사용자가 자바 스크립트를 제공 할 수 있도록 할 그들은 두 가지 방법 중 하나를 사용하여 위험 완화 :

  1. 호스트 다른 도메인에서 개별 사용자의 CMS의의를. Blogger 및 Tumblr (예 : myblog. blogspot .com vs. blogger.com)은 사용자의 템플릿이 다른 사용자의 쿠키를 훔치지 않도록 방지합니다. 자신이하는 일을 알고 루트 도메인에서 사용자 컨텐트를 전혀 호스트하지 않아야합니다.
  2. 사용자 콘텐츠가 사용자간에 공유되지 않으면 악의적 인 사용자가 제공하는 스크립트가 중요하지 않습니다. 그러나 CMS는 공유에 관한 내용이므로 여기서는 해당 사항이 적용되지 않습니다.

작동하지 않을 수있는 블랙리스트 필터가 있지만 오늘은입니다. HTML 사양과 브라우저는 정기적으로 변경되므로 필터를 유지 관리하는 것이 거의 불가능합니다. 블랙리스트는 보안 및 기능상의 문제가있는 확실한 방법입니다.

사용자 데이터를 다룰 때는 항상 신뢰할 수없는 것으로 간주하십시오. 제품 초기에이 문제를 해결하지 않고 시나리오가 바뀌면 사용자를 괴롭 히지 않고 XSS를 방지하기 위해 모든 XSS 포인트를 찾거나 제품을 수정하는 것은 거의 불가능합니다.

관련 문제