2009-10-12 15 views
16

मैं jinja2 में खतरनाक असंतुलित इनपुट से कैसे बचूं?jinja2: html escape variables

क्या मैं इसे टेम्पलेट के अंदर कर सकता हूं या इसे पायथन कोड में किया जाना चाहिए?

मेरे पास एक चर है जिसमें दा <ngero> u & एस वर्ण हो सकते हैं। मैं इसे जिन्जा 2

उत्तर

28

उदा।

{{ user.username|e }} 

|e फिल्टर के माध्यम से पाइप यह

Jinija: Template Designer Documentation -> Builtin Filters: Escape

+0

लिंक से ऊपर टूट, http://jinja.pocoo.org का उपयोग/दस्तावेज़/टेम्पलेट्स /? हाइलाइट = पाइप% 20safe # html-escaping –

+0

और फिर टूटा हुआ http://jinja.pocoo.org/docs/dev/templates/#builtin-filters – silpol

14

तुम भी autoescape के लिए सब कुछ पर्यावरण बता सकते हैं:

e = Environment(loader=fileloader, autoescape=True) 

ध्यान दें: jinja1 में इस auto_escape

4

है यदि आप यो में एचटीएमएल से बचना चाहते हैं उर कार्यक्रम, आप इसे इस (उदाहरण) की तरह कर सकते हैं:

>>> import jinja2 
>>> jinja2.__version__ 
'2.6' 
>>> a 
'<script>alert("yy")</script>' 
>>> jinja2.escape(a) 
Markup(u'&lt;script&gt;alert(&#34;yy&#34;)&lt;/script&gt;') 
>>> str(jinja2.escape(a)) 
'&lt;script&gt;alert(&#34;yy&#34;)&lt;/script&gt;'