Django之sql注入,XSS攻击,CSRF攻击原理及防护

sql注入的危害

非法操作用户数据库的数据来获取利益,
通过修改数据库来修改网页的内容,

注入木马等

比如下面的用户登录时进行sql注入

class LoginUnsafeView(View):
    def get(self,request):
        return render(request,'login.html')

    def post(self,request):
        user_name = request.POST.get('username','')
        pwd = request.POST.get('password','')

        import MYSQLdb
        conn = MYSQLdb.connect(host="127.0.0.1",user='root',password='root',db='test',charset='utf8')
        cursor = conn.cursor()
        sql_select = "select * from users_userprofile where email='{0}' and password='{1}' ".format(user_name,pwd)

        result = cursor.execute(sql_select)
        for row in cursor.fetchall():
            pass

Django的ORM是不会有sql注入的。他会将单引号等转义的。如果在登录页面随便写个错误的用户名后端不会查询到该用户,但是当在登录页面写上sql比如有 单引号和OR 语句, 后端能查询到sql注入的用户

点击 登录 ,后台就会查询到所有的数据。因为该sql注入,会使下面的查询为真的,这个1=1 就使条件为真



xss攻击

危害:

1 盗取各类用户帐户,如网银账户

2 盗取企业重要的具有商业价值的资料

3 非法转账

4 控制受害者及其向其他网站发起攻击,注入木马等

攻击流程


如果黑客发送的链接没有了“<” 那么xss发送来的script代码就无法执行了,所以可以通过以下方式防护

1 代码里对用户输入的地方和变量都需要仔细检查长度和对“>”,"<" ,  " ; " ,  " ' "等字符做过滤;
2 避免直接在cookie中泄露用户隐私,例如email、密码等等
3 通过使cookie和系统ip绑定来降低cookie泄露后的危险
4 尽量采用POST而非GET提交表单 


csrf攻击

csrf跨站请求伪造(Cross-site request forgery)的危害
1 以你名义发送邮件
2 盗取你的账号
3 购买商品
4 虚拟货币转账 

攻击原理


攻击示例过程


 

信任网站bank.com页面的情况下访问了wenxian.com(关闭后可能导致cookie消失,csrf攻击就无用了),这时浏览器会自动加载比如image中的代码(即危险网站要求访问bank网站),这时浏览器就会带着用户的cookie去访问bank网站,bank网站以为是用户就通过,从而达到了一次csrf(跨站请求伪造)攻击

上面的是get方式发起攻击,下面的post也能完成攻击,当用户点击了危险网站后,自动执行下面的post代码,完成攻击

所以在处理敏感数据的时候就用表单进行post提交,然后加上{% csrf_token %}。攻击网站即使生成自定义的csrf_token码也无法完成后台验证


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Django 是一个基于 Python 的 Web 开发框架,它的核心思想是 DRY(Don’t Repeat Yourself),即避免重复的代码和逻辑。下面是 Django原理详解: MVC 模式 Django 遵循 MVC(Model-View-Controller)模式,即将应用程序分为三个部分: - 模型(Model):负责处理数据存储和检索。 - 视图(View):负责数据呈现和用户交互。 - 控制器(Controller):负责处理用户请求并返回响应。 在 Django 中,控制器和视图被合并成了一个中间件(Middleware),称为视图(View)。这样做的好处是可以将控制器的逻辑和视图的逻辑分离,使代码更加清晰。 ORM 框架 Django 使用 ORM(Object-Relational Mapping)框架来处理数据库操作。ORM 框架允许开发者使用面向对象的方式来操作数据库,而不需要直接写 SQL 语句。Django 的 ORM 框架支持多种数据库,包括 MySQL、PostgreSQL、SQLite 等。 路由系统 Django 的路由系统可以将 URL 映射到相应的视图函数上。路由系统是一个 URLconf(URL 配置)模块,它定义了 URL 和视图之间的映射关系。Django 的路由系统支持正则表达式和命名参数,可以方便地处理不同的 URL。 模板系统 Django 的模板系统使用 HTML、CSS 和 JavaScript 来构建用户界面。模板系统允许开发者将视图和模板分离,使代码更加清晰。模板系统支持模板继承、模板标签、模板过滤器等功能,可以方便地构建复杂的用户界面。 缓存系统 Django 的缓存系统可以缓存视图的输出结果,减少服务器负载和响应时间。缓存系统支持多种缓存后端,包括内存缓存、文件缓存、Redis 缓存等。 安全性 Django 的安全性得到了广泛的认可。Django 的安全功能包括 CSRF(Cross Site Request Forgery)保护、XSS(Cross Site Scripting)保护、SQL 注入保护等。 总结 Django 的核心思想是 DRY,它遵循 MVC 模式,使用 ORM 框架来处理数据库操作,具有强大的路由系统、模板系统、缓存系统和安全性。Django原理非常清晰,使开发者可以快速构建高质量的 Web 应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值