2010-06-15 6 views
2

어떤 방식 으로든 블록/섹션/요소 내부에서 스크립트의 브라우저 실행을 비활성화 할 수 있습니까?특정 block/div (의심되는 HTML 포함)에서 javascript를 사용 중지 하시겠습니까?

필자의 (미래) 사용자가 CK 편집기를 사용하여 "풍부한 콘텐츠"를 만들 수있게하는 시나리오입니다. 나중에 xss, 리디렉션, 신원 도용, 스팸 및 그 밖의 모든 위험이있는 다른 사용자에게 표시 될 내용 ...

나는 " 공격 벡터 "얼마나 많은 알려져을보고 한 후, incomming의 XHTML을"소독 "이 있습니다 : http://ha.ckers.org/xss.html

내가 정말 찾고 있어요 것은 뭔가 같은 :

< 사업부 아이디 ="userContent "> < scriptOFF>

용의자 HTML

,

</scriptOFF> </DIV>

당신은 입력을 소독해야

답변

3

이상적인 방법은 최종 사용자의 HTML/자바 스크립트를 허용하지 않는 것입니다. 해당 제한 사항이 적용되는 경우 적절한 컨텍스트에 따라 encode the output을 확인하면됩니다. 휠을 다시 발명하지 마십시오. 기존 라이브러리를 사용하십시오.

HTML을 허용해야하는 경우 OWASP's ANTI-SAMY 또는 HTML Purifier과 같은 라이브러리를 사용하십시오. 그들은이 목적을 위해 정확하게 지어졌습니다.

+0

HTML 정수기입니다. (내가 볼 수있는 한) 완벽하게 작동합니다. - OWASP에서도 권장합니다. – T4NK3R

3

가 선택적으로 내가 알고있는 자바 스크립트를 비활성화 할 수있는 방법이 없습니다.

블랙리스트가 아닌 허용 된 태그의 화이트리스트를 사용하는 것이 중요합니다. 그렇게하면 안전하게 할 수 있어야합니다.

1

네,하지만 그 "화이트리스트"것 거대한 것 - 그 여기에 설명 ALA 내가 훨씬 미묘한 허점을 감지 할 충분한 능력에서 해요 : http://ha.ckers.org/xss.html

이것은 "지역 사회의 노력"을 할 필요가있을 것이다 - 보고 HTML-청정기 (http://htmlpurifier.org)는 이제 ...

난 그냥가 XSS "벡터"

  • 수 "사람이 권력을"의 99 %를 방지하기 위해 이러한 태그를 위해 좋은 것이라고 생각 브라우저 제작자가 그것을 구현하도록 설득하십시오.)

편집 : 괜찮습니다. HTML 정수기입니다! - 누구나 답장 해 주셔서 감사합니다.)

+1

브라우저 구현이 * 그것에 대해 생각하고 * gnubyexample.blogspot.com에서 배경과 현재 상태를 설명

제. 널리 퍼지려면 수년이 걸릴 것이며 공격자는 다른 브라우저 취약점으로 넘어갈 것입니다. –

+0

보안은 (거의) 클라이언트에 적용되지 않아야합니다! 누군가이 사이트를 아직 지원하지 않는 구 브라우저로 방문하면 어떻게됩니까? –

1

"noscript"태그 또는 "textarea"태그를 사용하는 경우에도 해당 xss. 침입자가 종결 태그를 주입하지 못하게하는 것은 무엇입니까?

< div id="userContent">< scriptOFF> 

<?=$_GET['xss']?> 

< /scriptOFF>< /div> 

하지만 여전히 XSS :

http://localhost/xss.php?xss=< /scriptOFF>< /div> <script> alert(/still_xss/) </script> 
0

아니,하지만 다시 당신은 확실히 사용자가 처음에 페이지에 코드 피드 손을 허용해서는 안된다.

자바 스크립트를 삭제하지 마십시오. Javascript를 허용하지 마십시오. 사실, HTML을 전혀 허용하지 마십시오. 자신 만의 제한된 마크 업 언어 (ala BBCode)를 작성하거나 정말로 필요한 경우 일부 HTML 태그를 선택하십시오.

즉 보안 노력으로 차용하지 말고 첨가하십시오.

1

@sri는 "html5 iframe 샌드 박스"정보, here is a test script을 어디에서 찾을 수 있는지 언급했습니다.

"브라우저에서 iframe 샌드 박스 속성을 지원합니다. :)"는 Chromium에 표시됩니다.

전화 브라우저와 같은 khtml/webkit 기반 브라우저에서도 긍정적 인 결과를 얻을 수 있습니다. Opera 11, Firefox 3.6 및 Firefox4는 아직 샌드 박스 특성을 구현하지 않았습니다. "HTML5은 iframe 샌드 박스"에 대한 검색 -