문제

저는 고객을 위해 호스팅된 CMS와 유사한 서비스를 시작하려고 합니다.

마찬가지로 고객은 자신의 사이트를 방문하는 모든 사람에게 제공될 텍스트를 입력해야 합니다.나는 큰 텍스트 블록에 대해 WMD(SO에서 사용하는 실시간 마크다운 미리 보기)와 함께 Markdown을 사용할 계획입니다.

이제 HTML에 대한 입력을 삭제해야 합니까?'CMS'를 편집하는 사람은 소수에 불과하며 모두 유료 고객이라는 점을 감안할 때 잘못된 HTML을 제거해야 할까요, 아니면 그냥 열광하게 놔둬야 할까요?결국 그것은 그들의 '사이트'이다.

편집하다: 내가 그렇게 하는 주된 이유는 그들이 자신의 자바스크립트를 사용하고, 자신만의 CSS와 div를 갖게 하고, 출력용이 아닌 것을 갖게 하기 위해서입니다.

도움이 되었습니까?

해결책

그렇지 않을 것입니다 입력을 소독합니까?

그렇지 않은 경우, 고객이나 자신 또는 둘 다에 재앙을 초대합니다.

다른 팁

귀하의 질문은 다음과 같습니다.

"편집하다:내가 그렇게 하는 주된 이유는 그들이 자신만의 자바스크립트를 사용하고, 자신만의 CSS와 div를 갖게 하고, 출력용이 아닌 것을 갖게 하기 위해서입니다."

사용자가 임의의 JavaScript를 제공하도록 허용하면 입력을 삭제하는 것은 노력할 가치가 없습니다.XSS(Cross-Site Scripting)의 정의는 기본적으로 "사용자는 JavaScript를 제공할 수 있지만 일부 사용자는 좋지 않습니다"입니다.

이제 일부 웹사이트에서는 사용자가 JavaScript를 제공할 수 있도록 허용하고 다음 두 가지 방법 중 하나로 위험을 완화합니다.

  1. 개별 사용자의 CMS를 다른 도메인에서 호스팅합니다.Blogger 및 Tumblr(예:내 블로그.블로그스팟.com 대blogger.com) 이를 통해 사용자의 템플릿이 다른 사용자의 쿠키를 훔치는 것을 방지할 수 있습니다.자신이 무엇을 하고 있는지 알아야 하며 루트 도메인에서 사용자 콘텐츠를 호스팅해서는 안 됩니다.
  2. 사용자 콘텐츠가 사용자 간에 공유되지 않는 경우 악의적인 사용자가 제공하는 스크립트는 중요하지 않습니다.그러나 CMS는 공유에 관한 것이므로 여기에는 적용되지 않을 수 있습니다.

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

사용자 데이터를 다룰 때는 항상 신뢰할 수 없는 데이터로 취급하십시오.제품 초기에 이 문제를 해결하지 않고 시나리오가 변경되면 돌아가서 모든 XSS 지점을 찾거나 사용자를 화나게 하지 않고 XSS를 방지하도록 제품을 수정하는 것은 거의 불가능합니다.

당신은 또한 다시 불만을 품은 직원, 교차 고객 공격 또는 다른 종류의 바보 행동을 보호 할 것입니다.

사용자 나 시청자에 관계없이 항상 소독해야합니다.

최소한 입력을 구문 분석하면 HTML 태그의 특정 "안전한"하위 집합을 허용합니다.

나는 당신이 항상 입력을 소독해야한다고 생각합니다. 대부분의 사람들은 CMS를 사용하여 자신의 웹 사이트를 처음부터 만들고 싶지 않으며 페이지 편집에 쉽게 액세스 할 수 있기를 원하기 때문입니다. 이 사용자는 아마도 소독 될 텍스트를 사용하려고하지 않을 가능성이 높지만,이를 보호함으로써 사용자를 보호하고 있습니다.

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