크로스 사이트 스크립팅의 위험 없이 fckEditor를 어떻게 안전하게 사용합니까?

StackOverflow https://stackoverflow.com/questions/65734

  •  09-06-2019
  •  | 
  •  

문제

이 링크는 fckEditor를 사용하여 내 앱에 대한 공격을 설명합니다.http://knitinr.blogspot.com/2008/07/script-exploit-via-fckeditor.html

fckEditor를 계속 사용하면서 내 앱을 안전하게 보호하려면 어떻게 해야 하나요?fckEditor 구성입니까?fckEditor에서 텍스트를 가져온 후 서버측에서 처리해야 하는 작업이 있나요?

fckEditor 때문에 퍼즐이군요 용도 html 태그를 형식화하기 때문에 텍스트를 다시 표시할 때 HTML 인코딩만 할 수는 없습니다.

도움이 되었습니까?

해결책

다른 선택의 여지 없이 HTML 서버 측을 삭제합니다.PHP의 경우 HTML 정수기, .NET의 경우 잘 모르겠습니다.HTML을 삭제하는 것은 까다롭습니다. 스크립트 태그를 제거하는 것만으로는 충분하지 않으며, 예를 들어 IE의 어리석음으로 인해 on* 이벤트 핸들러 등을 주의해야 합니다.

또한 사용자 정의 HTML 및 CSS를 사용하면 모든 화면 등을 덮는 오버레이(절대 위치)를 사용하여 사이트의 모양과 레이아웃을 쉽게 탈취할 수 있습니다.이에 대비하십시오.

다른 팁

버그는 실제로 FCKeditors 결함이 아닙니다.웹 사이트에 표시될 HTML을 사용자가 편집하도록 허용하는 한, 데이터를 출력하기 전에 확인하지 않으면 사용자는 항상 해를 끼칠 가능성이 있습니다.

어떤 사람들은 이를 위해 HTML인코딩을 사용하지만 그렇게 하면 원하는 것이 아닌 FCKeditor에서 수행한 모든 서식이 파괴됩니다.


어쩌면 당신은 Microsoft 안티 크로스 사이트 스크립팅 라이브러리.샘플 MSDN

fckEditor에서 텍스트를 가져온 후 서버측에서 처리해야 하는 작업이 있나요?

정확하게.StackOverflow에도 이와 관련된 몇 가지 초기 문제가 있었습니다.이 문제를 해결하는 가장 쉬운 방법은 HTML 라이브러리를 사용하여 사용자 입력을 구문 분석한 다음 출력에서 ​​원하지 않는 태그를 이스케이프하는 것입니다.페이지에 인쇄할 때 후처리 단계로 이 작업을 수행하십시오. 데이터베이스의 데이터는 사용자가 입력한 것과 정확히 동일해야 합니다.

예를 들어 사용자가 다음을 입력하면 <b><script>evil here</script></b>, 귀하의 코드는 그것을 다음과 같이 번역합니다. <b>&lt;script&gt;evil here&lt;/script&gt;</b> 페이지를 렌더링하기 전에.

그리고 하지 마라 이 문제를 해결하려면 정규식을 사용하세요. 이는 영리한 누군가가 이 문제를 다시 깨도록 초대하는 것일 뿐입니다.

FCKEditor는 몇 개의 태그만 사용하도록 구성할 수 있습니다.이러한 몇 가지 태그를 제외한 모든 것을 인코딩해야 합니다.

해당 태그는 다음과 같습니다.<strong> <em> <u> <ol> <ul> <li> <p> <blockquote> <font> <span>.

글꼴 태그에는 얼굴 및 크기 속성만 있어야 합니다.스팬 태그에는 클래스 속성만 있어야 합니다.

이러한 태그에는 다른 속성이 허용되지 않습니다.

나는 금지 사항을 이해합니다.나는 DO가 부족합니다.

FCKEditor를 반드시 사용해야 합니까, 아니면 다른 편집기/마크업 언어를 사용할 수 있습니까?StackOverflow에서 사용하는 것과 동일한 언어인 Markdown 및 WMD Editor를 사용하는 것이 좋습니다..NET용 Markdown 라이브러리에는 모든 HTML 태그를 이스케이프하는 옵션이 있어야 합니다. 이 옵션을 켜야 합니다.

XSS는 까다로운 일입니다.나는 몇 가지 독서를 제안합니다 :

어쨌든 요약하자면 엄격하게 허용되는 항목만 허용해야 한다는 것입니다.알려진 악용 벡터를 거부할 수 없습니다. 그렇지 않으면 항상 영원한 투쟁의 배후에 있을 것이기 때문입니다.

내 생각에 일부 사람들이 제기한 문제는 Fckeditor가 몇 개의 태그만 인코딩한다는 것이 아닙니다.이는 사악한 사용자가 Fckeditor를 사용하여 악의를 작성할 것이라는 순진한 가정입니다.입력을 수동으로 변경할 수 있는 도구는 매우 많습니다.

나는 모든 사용자 데이터를 오염된 것으로 취급합니다.Markdown을 사용하여 텍스트를 HTML로 변환합니다.텍스트에서 발견된 모든 HTML을 삭제하여 악의를 줄입니다.

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