2012-08-29 3 views
1

내가 작업하고있는 웹 사이트에서 사용자는 서로 메시지를 보낼 수 있습니다. 사용자가 < b>, < i> 및 <>과 같은 텍스트 스타일 태그를 사용하여 텍스트를 굵게, 기울임 꼴 및 밑줄로 만들길 바랍니다. 그러나 실제로, 나는 그 < script> 태그로 XSS되고 싶지 않다. 또는 mouseover 속성이있는 < b> 일 수 있습니다.django에서 텍스트 스타일 태그를 사용하고 싶지만 XSSed가되고 싶지 않습니다.

이렇게하는 것이 가장 쉽고 안전한 방법은 무엇입니까?

문제가 있다면 django와 jQuery를 사용하고 있습니다.

답변

3

정말로 HTML 태그를 사용하려면 Bleach을 고려해야합니다.

>>> evil = "This <script>...</script> is partly <b>evil</b>" 
>>> bleach.clean(evil) 
u'This &lt;script&gt;...&lt;/script&gt; is partly <b>evil</b>' 

clean을 사용하면 허용 할 태그를 명시 적으로 허용 할 수 있습니다. strip을 사용하면 허용되지 않는 태그를 이스케이프 처리하지 않고 제거 할 수 있습니다.

>>> evil = "This uses <i>i</i> and <b title='hovertext'>b</b> and <em>em</em>" 
>>> bleach.clean(evil, tags=["b"], attributes=dict(), strip=True) 
u'This uses i and <b>b</b> and em' 
3

태그를 허용하지 마십시오. 대신 XSS 공격을 허용하지 않는 마크 업 언어 supported by Django 중 하나를 사용하십시오.

+0

감사합니다. 슈퍼 깨끗하고 스마트 한 솔루션. –

관련 문제