python---Django常见的web攻击和防范

1、sql注入攻击及防范

2、xss攻击和防范

3、csrf攻击和防范

一、sql注入攻击和防范

1、sql注入的危害:

非法读取、篡改、删除数据库中的数据

盗用用户的各种敏感信息,获取利益

通过修改数据库来修改网页上的内容

注入木马

2、攻击的方法:

项目中,执行数据库中操作不是用orm来编写,用原生的sql语句,例如登录页面:

 1 from django.shortcuts import render
 2 class LoginUnsafeView(View):
 3     def get(self,request):
 4         return render(request,'login.html')
 5     def post(self,request):
 6         user_name=request.POST.get('username','')
 7         pass_word=request.POST.get('password','')
 8         import MySQLdb
 9         db=MySQLdb.connect("localhost","root","","testdb",charset='utf8')
10         cursor=db.cursor()
11         cursor.execute("select * from userprofile where username={0} and password={1}".format(user_name,pass_word))
12         data=cursor.fetchall()
13         db.close()

如果在登录页面用户名输上:'OR 1=1 # 相当于:‘select * from userprofile where user=\\'\\' or 1=1#’     and password=\\'123\\'

1=1一定为真,所以用户会把所有的数据都拿到,然后进行数据库攻击。

预防措施:前端进行表单校验,is_valid(),django的models中操作的数据库方法已经对sql注入攻击进行了处理。

二、xss攻击和预防

1、xss跨站脚本攻击(cross site scripting)的危害:

盗用各类用户账号,如用户网银账号,各类管理员账号、盗用企业重要的具有商业价值的资料

非法转账

控制受害者机器向其他网站发起攻击、注入木马等

2、实例:get请求数据

获取用户本地的session_id和所有本地的缓存

攻击流程:

这样黑客就可以伪装成用户向服务器发起攻击,这就是跨站脚本攻击

3、如何防护

首先代码里对用户输入的地方和变量都进行仔细的检查长度和对“<”">"";" "等字符进行过滤;

避免直接在cookie中泄露用户隐私,例如email,密码等等

通过使用cookie和系统ip绑定来降低cookie泄露后的风险

尽量采用post并非get提交表单

三、crsf攻击

csrf跨站请求伪造(cross-site request forgery)的危害:

以用户名义发送邮件

盗取用户的账户

购买商品

虚拟货币转账

csrf攻击原理:

用户向A服务器(银行)发送请求,返回时会带上请求的sessionid,之后在没有关闭或者说没有sessionid没有过期的情况下,又新打开一个窗口,访问黑客的网站,黑客给他返回一个图片,这个图片隐藏着一个向a服务器发送转账请求的url,然后用户一访问,钱就没了。

post请求也会受到这种攻击,通过iframe,然后执行脚本

csrf攻击的防范措施:在form表单中加{%crsf_token%}

猜你喜欢

转载自www.cnblogs.com/shijia-listen/p/10630137.html
今日推荐