2009-09-11 1 views
3
내가 장고 1.0 템플릿에 일부 HTML을 표시하고 나는 이런 식으로 뭔가하고있다 그렇게 할

:django의 autoescape가 안전합니까?

{% autoescape off %}{{ var.text }}{% endautoescape %} 

을하고 난 그냥이게 얼마나 안전 궁금? SQL 인젝션과 크로스 사이트 스크립팅 및 기타 취약점을 방지 할 수 있습니까?

이 텍스트는 사용자로부터 올 것

=== 편집 =======, 그래서 안전하게 장고 템플릿에서 HTML을 표시하는 가장 좋은 방법은 무엇입니까?

답변

6

autoescape는 SQL 삽입이 아닌 교차 사이트 스크립팅으로부터 보호됩니다 (make sure your inputs are scrubbed 필요). autoescape를 끄면 악성이 아닌 "텍스트"에있는 내용을 신뢰할 수 있습니다 (즉, 사용자가 텍스트 내용을 작성하거나 수정할 수 없어야 함). 이 가정이 유효한 경우 교차 사이트 스크립팅에 안전합니다. 그렇지 않으면 보안 허점입니다.

+0

+1 - 좋은 답변입니다! –

+0

위 질문에 대한 편집 : "이 텍스트는 사용자가 올 것입니다. 따라서 장고 템플릿에 html을 안전하게 표시하는 가장 좋은 방법은 무엇입니까?" – Joe

4

아니요, HTML을 템플릿 엔진에서 안전하다고 표시하면 안전하게 렌더링해야합니다.

또한, 당신은 간단하게 할 수이 완전히 var.text 어디에서 왔는지에 따라 안전 여부

{{ var.text|safe }} 
1

{% autoescape off %} 
    {{ var.text }} 
{% endautoescape %} 

을 변경하여 약간의 코드를 (물론, 단축) . 그것이 전적으로 귀하의 통제하에있는 판촉 메시지 (예를 들면)라면, 발에서 자신을 쏘지 않는 한 당신은 안전합니다. var.text가 어떻게 든 사용자로부터 온다면 위험합니다.