python如何攻击网站_python---Django常见的web攻击和防范

1、sql注入攻击及防范

2、xss攻击和防范

3、csrf攻击和防范

一、sql注入攻击和防范

1、sql注入的危害:

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

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

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

注入木马

2、攻击的方法:

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

1 from django.shortcuts importrender2 classLoginUnsafeView(View):3 defget(self,request):4 return render(request,'login.html')5 defpost(self,request):6 user_name=request.POST.get('username','')7 pass_word=request.POST.get('password','')8 importMySQLdb9 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请求数据

1516680-20190331085314125-754752405.png

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

攻击流程:

1516680-20190331085942507-1924839539.png

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

3、如何防护

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

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

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

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

三、crsf攻击

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

以用户名义发送邮件

盗取用户的账户

购买商品

虚拟货币转账

csrf攻击原理:

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

1516680-20190331091415841-569443787.png

1516680-20190331091629795-20514759.png

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值