如何防止Bottle - Python Web Framework中的转义字符?在
我正在用瓶子(python)制作一个歌曲歌词网络应用程序,在将数据插入数据库之前,我测试所有数据是否正确,因此,目前,我基本上有一个表单,有“歌曲名”,“艺术家”,“歌词”(在文本区),就这样。在
当表单提交时,它会加载一个包含上面提到的三个输入值(song、artist和lysts)的页面,一切正常,但是歌词的html被转义(在将歌词发送到模板之前,我将所有的\n
替换为<br>
)。在
所以我在this tutorial from bottlepy.org上做了研究,发现瓶子会逃过html标记以防止XSS攻击,您可以通过添加“!”来禁用它在变量名之前,太棒了!我找到了解决办法,但是。。。当我试图使用它时,它抛出了一个错误:
Exception:
SyntaxError('invalid syntax', ('H:\\Server\\htdocs\\letras\\prueba.tpl', 4, 27, "u'<div>Letra: ', _escape( !letra['letra'] ), u'</div>'])\n"))
Traceback (most recent call last):
File "H:\Server\htdocs\letras\bottle.py", line 764, in _handle
return route.call(**args)
File "H:\Server\htdocs\letras\bottle.py", line 1575, in wrapper
rv = callback(*a, **ka)
File "index.py", line 41, in guardar_letra
return template('prueba.tpl', letra = data)
File "H:\Server\htdocs\letras\bottle.py", line 3117, in template
return TEMPLATES[tplid].render(kwargs)
File "H:\Server\htdocs\letras\bottle.py", line 3090, in render
self.execute(stdout, kwargs)
File "H:\Server\htdocs\letras\bottle.py", line 3078, in execute
eval(self.co, env)
File "H:\Server\htdocs\letras\bottle.py", line 185, in __get__
value = obj.__dict__[self.func.__name__] = self.func(obj)
File "H:\Server\htdocs\letras\bottle.py", line 2977, in co
return compile(self.code, self.filename or '<string>', 'exec')
File "H:\Server\htdocs\letras\prueba.tpl", line 4
u'<div>Letra: ', _escape( !letra['letra'] ), u'</div>'])
^
SyntaxError: invalid syntax
<h1>Letra de {{ letra['titulo'] }}</h1>
<h2>Por: {{ letra['artista'] }}</h2>
<div>Fecha: {{ letra['Fecha_envio'] }}</div>
<div>Letra: {{ !letra['letra'] }}</div>
下面是如果我让瓶子从我的歌词html中逃逸的话,它的工作/外观(注意<br>
是如何显示为纯文本的):
http://i.stack.imgur.com/fxz7o.png
最后,这就是它应该看起来的样子
您需要将感叹号放在开口
{{
之后,瓶子才能认出它:最好,为了安全起见,您最好省略此处的空格:
^{pr2}$相关问题 更多 >
编程相关推荐