• 微信
    咨询
    微信在线咨询 服务时间:9:00-18:00
    纵横数据官方微信 使用微信扫一扫
    马上在线沟通
  • 业务
    咨询

    QQ在线咨询 服务时间:9:00-18:00

    选择下列产品马上在线沟通

    纵横售前-老古
    QQ:519082853 售前电话:18950029581
    纵横售前-江夏
    QQ:576791973 售前电话:19906048602
    纵横售前-小李
    QQ:3494196421 售前电话:18965140883
    纵横售前-小智
    QQ:2732502176 售前电话:17750597339
    纵横售前-燕子
    QQ:609863413 售前电话:17750597993
    纵横值班售后
    QQ:407474592 售后电话:400-1886560
    纵横财务
    QQ:568149701 售后电话:18965139141

    售前咨询热线:

    400-188-6560

    业务姚经理:18950029581

  • 关注

    关于纵横数据 更多优惠活动等您来拿!
    纵横数据官方微信 扫一扫关注官方微信
  • 关闭
  • 顶部
  • 您所在的位置 : 首页 > 新闻公告 > 美国站群服务器如何做好防护SQL注入漏洞

    美国站群服务器如何做好防护SQL注入漏洞

    美国站群服务器如何做好防护SQL注入漏洞【艾娜】

    1. SQL注入原理

    漏洞形成原因:用户输入的数据被SQL解释器执行。

    2. 常见的SQL注入类型分类

    数字型 & 字符型,不管注入类型如何,攻击者的目的只有一点,那就是绕过程序限制,使用户输入的数据带入数据库执行,利用数据库的特殊性获取更多的信息或者更大的权限。

    举个例子:
    (1)在页面URL后面输入:user_id=1' and 1=1 order by 4 #
    (2)加载页面,将url的参数传入后台,后台执行SQL语句为:SELECT first_name, last_name FROM users WHERE user_id = '1' and 1=1 order by 4 #'
    (3)根据SQL语法可知,#号将后续的引号注释了。order by是用来查询列数的,当字段数超过数据库的字段数,数据库就会返回错误信息,因此,可以利用order by来猜测数据库的字段数。因此,如果熟悉SQL语句,就可以进一步写入更多的语句,查询数据库,导致隐私数据泄漏。

    常见利用数据库注入目的:
    (1)查询数据
    (2)读写文件
    (3)执行命令


    【 防止SQL注入】

    数据库并没有什么好的办法直接过滤SQL注入。只负责执行SQL语句,根据SQL语句来返回相关数据。
    因此:防御SQL注入,还是得从代码入手。
    根据SQL注入的分类,防御主要分为两种:数据类型判断特殊字符转义

    • 严格的数据类型

    例如:请求ID为1的新闻。

    URL:http://www.wecbug.org.news.jsp?id=1int id = Integer.parseInt(request.getParameter('id'));// 接收ID参数,并转换为int类型News news = newsDao.findNewsById(id);

    攻击者想在此代码中注入是不可能的,因为程序在接收ID参数后,做了一次数据类型的转换,如果ID参数接收的数据是字符串,那么在转换时将会发生Exception。由此可见,只需要在程序中严格判断数据类型即可,数据类型处理正确后,足以抵挡数字型注入。

    • 特殊字符转义
      在数据库查询字符串时,任何字符都必须加上单引号,既然知道攻击者在字符型注入中必然会出现单引号等特殊字符,那么将这些特殊字符转义即可防御字符型SQL注入。

    例如:用户搜索数据:http://www.xxser.con/news?tag=电影

    SQL注入语句如下:

    select title,content from news where tag='%电影' and 1=2 union select username, password from users -- %'

    防止SQL注入应该在程序中判断字符串是否存在敏感字符,如果存在,则根据相应的数据库进行转义。如:MySQL使用“\”转义,如果以上代码使用数据库为MySQL,那么转义后的SQL语句如下:

    select title,content from news where tag='%电影\' and 1=2 union select username, password from users -- %'

    这样转义之后,后面的SQL语句就无法执行,一次,也就防御了SQL的注入。

    • 使用预编译语句(StatementCallableStatementPreparedStatement

    • 框架技术

    • 存储过程

    总结:
    SQL注入的危害虽然很大,但是可以完全杜绝,程序开发团队一定要有自己的安全规范模版,因为不可能每个程序员都了解SQL注入,所以团队有一套自己的模板之后,SQL注入会大大减少。比如,碰到SQL语句完全采用“PrepareStatement”类,且必须用参数绑定,如果这样还存在SQL注入,那就是某个程序员没有遵循规范,这样就从安全转移到代码规范问题上,只要遵循规范,就不会有问题,这一方法无论是SQL注入,还是后面的其他漏洞,都适用。

    -------------------------------
    纵横数据 美国站群服务器 香港站群服务器 欢迎联系在线客服 艾娜QQ  482986990


    最新推荐


    微信公众帐号
    关注我们的微信