Tronado的自动转义

tornadoescape.py

'''
转义
'''
import tornado
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import define, parse_config_file, options
from tornado.web import Application, RequestHandler


# 继承自RequestHandler类
# 对请求的方式(get/post)调用重写父类的get/post方法做出响应
class IndexHandler(RequestHandler):
    def get(self,*args,**kwargs):
        self.render('escape.html',result='')

    def post(self,*args,**kwargs):
        t = self.get_body_argument('test')
        # 针对chrome浏览器
        self.set_header('X-XSS-Protection',0)
        self.render('escape.html', result=t)




define('duankou',type=int,default=8888)
# 当前文件所在文件夹的上一个(mytornado)下的config/config
parse_config_file('../config/config')


app = Application([('/',IndexHandler)],
                  template_path='mytemplate')

server = HTTPServer(app)

server.listen(options.duankou)

IOLoop.current().start()

escape.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% autoescape None%}

    <form method="post" action="/">

        <textarea cols="30" rows="5" name="test">

        </textarea>

        <input type="submit" value="提交">

    </form>

    {{result}}
</body>
</html>

详解:

Tornado针对<script></scripte>会默认开启自动转义功能,以防止恶意代码的执行.
所谓的转义就是把<script>标签变为&lt;scripte&gt;

第一种:
在Application的构造器中,以关键字参数autoescape传入,值为None.
但会影响到所有模板中的HTML文件都关闭转义.
如果只想让某一个页面关闭转义,使用第二种方式
第二种:
在需要关闭自动转义的页面中,加入语句:
{%autoescape None%}
注意:
Google Chrome浏览器安全级别比较高,
可以通过设置响应头来压制Chrome的安全机制:
set_header(‘X-XSS-Protection’,0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值