美文网首页零基础使用Django2.0.1打造在线教育网站
零基础使用Django2.0.1打造在线教育网站(二十五):常见

零基础使用Django2.0.1打造在线教育网站(二十五):常见

作者: 啃饼小白 | 来源:发表于2018-08-19 08:32 被阅读27次

    写在前面

    本篇笔记我们将介绍常见的网络攻击与防护,具体包括SQL注入攻击及防护XSS攻击及防护以及CSRF攻击及防护,下面我们依次介绍一下。

    SQL注入攻击及防护

    首先我们来了解一下什么是SQL注入?


    所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。


    SQL注入的危害:

    下面我们通过一段代码了解一下SQL注入的过程:

    # users/views.py文件:
    class LoginUnsafeView(View):
        def get(self, request):
            return render(request, "login.html", {})
        def post(self, request):
            user_name = request.POST.get("username", "")
            pass_word = request.POST.get("password", "")
    
            import MySQLdb
            conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='root', db='mxonline', charset='utf8')
            cursor = conn.cursor()
            sql_select = "select * from users_userprofile where email='{0}' and password='{1}'".format(user_name, pass_word)
    
            result = cursor.execute(sql_select)
            for row in cursor.fetchall():
                # 查询到用户
                pass
            print 'hello'
    
    # eduline/urls.py文件:
    from users.views import LoginUnsafeView
    
    urlpatterns = [
        path('login/', LoginUnsafeView.as_view(), name='login'),
    ]
    
    

    这里竟然把sql语句写到这里,所以我们可以在参数中加入sql语句,使之拼接字符串从而为真被系统识别通过,盗取用户信息。但是在Django自带了orm,可以对这个进行验证,从而保证系统的安全。

    因此建议大家都采用orm这种形式,不要使用原生的sql语句。

    XSS攻击及防护

    首先我们来了解一下什么是XSS攻击?


    XSS跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。


    XSS攻击的危害:
    攻击流程为:
    举个例子来说:
    当你输入iPhone6时,这个字符就会被显示到页面中: 之后,黑客就会修改js代码:

    然后就拿到了你的登录cookie就可以进入你的账户进行肆意掠夺你的money了。

    这也就是为什么你觉得自己明明进入的是官方网站,怎么账号(经常就是QQ号)被盗了的缘故,所以不要随意点开陌生人发的链接。

    XSS防护:

    CSRF攻击及防护

    首先我们来了解一下什么是CSRF攻击?


    CSRF(Cross-site request forgery)跨站请求伪造,是通过伪装来自受信任用户的请求来利用受信任的网站。


    CSRF攻击的危害:

    攻击流程为:



    你看,这就是伪装:用户开始访问了A,之后访问了B,而B是要求用户访问A的。用户以为这是跳转到A的链接,以为很官方,殊不知就是这种官方泄露了自己的信息。
    原因在于用户每次向A请求时,都会带上session id,这样就很容易出问题。

    CSRF防护:提交form表单必须添加crsf token,进行crsf token验证,而攻击网站是无法生成crsf token的。还有一点,但凡涉及到敏感信息的网站,你登录进去就要及时登出,这样可以避免很多问题的发生。

    至此,本篇关于常见网络攻击与防护的介绍就到此为止了,感谢你的赏阅!

    相关文章

      网友评论

        本文标题:零基础使用Django2.0.1打造在线教育网站(二十五):常见

        本文链接:https://www.haomeiwen.com/subject/nkoubftx.html