web框架--XSS攻击和CSRF请求伪造

XSS

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。

tornado中已经为我们给屏蔽了XSS,但是当我们后端向前端写前端代码的时候传入浏览器是字符串,而不是形成代码格式。所以就需要一个反解,在传入模板语言中前面加一个raw,例如{% raw name %}

class IndexHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        jump = '''GO'''%('/index/')
        script = '''
            
        '''
        self.render('index.html',jump=jump,script=script)  #传入两个前端代码的字符串
start.py
 1 
 2 "en">
 3 
 4     "UTF-8">
 5     Title
 6     
18 
19 
20     
class="pager"> 21 {% raw jump %} 22 {% raw script%} 23
24 25
index.html

 

CSRF

CSRF(Cross-site  request forgery跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
当前防范 XSRF 的一种通用的方法,是对每一个用户都记录一个无法预知的 cookie 数据,然后要求所有提交的请求中都必须带有这个 cookie 数据。如果此数据不匹配 ,那么这个请求就可能是被伪造的。

Tornado 有内建的 XSRF 的防范机制,要使用此机制,你需要在应用配置中加上 xsrf_cookies 设定:xsrf_cookies=True

简单来说就是在form验证里面生成了一段类似于自己的身份证号一样,携带着他来访问网页

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import tornado.web
 5 import tornado.ioloop
 6 
 7 class CsrfHandler(tornado.web.RequestHandler):
 8 
 9     def get(self, *args, **kwargs):
10         self.render('csrf.html')
11 
12     def post(self, *args, **kwargs):
13         self.write('已经收到客户端发的请求伪造')
14 
15 
16 settings = {
17     'template_path':'views',
18     'static_path':'statics',
19     'xsrf_cokkies':True,        # 重点在这里,往这里看
20 }
21 
22 application = tornado.web.Application([
23     (r'/csrf',CsrfHandler)
24 ],**settings)
25 
26 if __name__ == "__main__":
27     application.listen(8888)
28     tornado.ioloop.IOLoop.instance().start()
start.py
 1 
 2 "en">
 3 
 4     "UTF-8">
 5     Title
 6 
 7 
 8     
"/csrf" method="post"> 9 {% raw xsrf_form_html() %} 10

"user" type="text" placeholder="用户"/>

11

'pwd' type="text" placeholder="密码"/>

12 "submit" value="Submit" /> 13 "button" value="Ajax CSRF" onclick="SubmitCsrf();" /> 14
15 16 17 41 42
index.html

你可能感兴趣的:(web框架--XSS攻击和CSRF请求伪造)