ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

常见web攻击及防范

2021-05-18 10:05:44  阅读:187  来源: 互联网

标签:web 攻击 防范 用户 cookie csrf sql select


sql注入攻击
sql注入的危害
非法读取、篡改、删除数据库中数据
盗取用户的各类敏感信息,获取利益
通过修改数据库来修改网页上的内容
注入木马等

下面的例子告诉你,sql实现注入的原理

def post(self,request):
    user_name = request.POST.get("username", "")
    pass_word = request.POST.get("password", "")
    
    import pyMySQL
    conn = pyMySQL.connect(
        'NAME': "mxonline",
        'USER':'root',
        'PASSWORD':'',
        'HOST':'127.0.0.1'
    )
    cursor = conn.cursor()
    sql_select = "select * from users where username='{0}' and password='{1}'".format(username,password)
    result = cursor.execute(sql_select)
    
    for row in cursor.fetchall():  # 检查数据库是否有该用户
        # 查询到用户
        pass
    print("没有查询到用户")
    

前端输入:
用户名:' or 1=1#
密码随便输入:1234
前端没有做任何处理就会原原本本的传给后端,
后端收到用户名和密码,没有做任何处理,传进sql后就会是下面这样子:
sql_select = "select * from users
where username=\'\' or 1=1#\' and password=\'1234'\"

username='' or 1=1 用户名=空 或者 1=1一定会成立,sql_select语句执行一定会,然后绕过,后面的因为被注释了不会执行
该sql一定会执行通过,然后登录到系统

预防的措施很简单,
1.前端对输入的用户名和密码做有效检查,比如不能出现单引号等特殊符号
2.后端同样对前端传过来的数据做有效性识别,对无效的数据直接抛弃

xss跨站脚本攻击 cross site scripting

xss攻击流程

上面这个流程是常见的一个客户端向服务器发起请求url,服务器响应数据给客户端的过程
下面黑客可以通过url的key=value
(key=)

场景描述:
黑客控制了受害者(受害者成为了肉鸡),将url伪装成上面括号的样子,发送到服务器,服务器执行脚本后返回cookie给受害者,受害者把cookie中的sessionid发送给黑客,黑客拿到用户的sessionid就可以伪装成用户直接请求服务器中的数据,比如黑客已经窃取了后台管理员账号的cookie,那么就可以进入用户中心,拿到用户中心的所有用户数据。

xss预防措施:
1.代码里对用户输入的地方和变量都需要仔细检查长度和对" < "," > "," ; "," ' "等字符做过滤或者转义,把他encode掉。
2.避免直接在cookie中泄露用户隐私,例如email、密码等,通过使用cookie和系统ip绑定来降低cookie泄露后的危险
3.尽量采用post而非get请求表单

csrf 跨站点请求伪造 cross-site request forgery

csrf危害
以你的名义发送邮件
盗取你的账号
购买商品
虚拟货币转账

csrf攻击原理

场景:
在浏览器打开一个信任的网站,(session有效)然后在该浏览器新打开一个标签页(危险网站)。

<img src=http://www.mybank.com/Transfer/toBankId=11*&money=1000>

既是使用post请求,也一样会被攻击,以下面这段代码为例(实际就是哦攻击网站的源码):
自定义一个form,在用户浏览器加载完html后,自动执行该段代码发起post请求,实现csrf攻击

<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript">
    function steal()
    {
        iframe = document.frames["steal"];
        iframe.document.Submit("transfer");
    }
  </script>
</head>
<body onl oad="steal()">
  <iframe name="steal" display="none">
    <form method="POST" name="transfer" action="http://www.myBank.com/Transfer">
      <input type="hidden" name="toBankId" value="622909123456">
      <input type="hidden" name="money" value="1000">
    </form>
  </iframe>
</body>
</html>>

预防措施:
django在前端页面表单提交里面,每次表单提交都一定要带上{% csrf_token %},才能完成表单提交,以此来防护csrf攻击,攻击网站是无法生成 csrf_token的,即使生成了,他也无法完成后台验证

标签:web,攻击,防范,用户,cookie,csrf,sql,select
来源: https://www.cnblogs.com/kknote/p/14779620.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有