• 11
  • 11
分享
  • SQL注入是什么?如何防止?——软件测试圈
  • TIMI 2022-04-02 14:28:01 字数 1665 阅读 1326 收藏 11

SQL注入是一种注入攻击,可以执行恶意SQL语句。下面本篇文章就来带大家了解一下SQL注入,简单介绍一下防止SQL注入攻击的方法,希望对大家有所帮助。

图片 1.png

 什么是SQL注入?

SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

SQL注入漏洞可能会影响使用SQL数据库(如MySQL,Oracle,SQL Server或其他)的任何网站或Web应用程序。犯罪分子可能会利用它来未经授权访问用户的敏感数据:客户信息,个人数据,商业机密,知识产权等。SQL注入攻击是最古老,最流行,最危险的Web应用程序漏洞之一。

SQL注入攻击的类型

SQL注入攻击可以通过多种方式执行。在选择特定攻击方法之前,攻击者可能会观察系统的行为。

带内注入

这是典型的攻击,攻击者可以通过相同的通信通道发起攻击并获得结果。这是通过两种带内技术完成的:

  • 基于错误的SQL注入:从显示的错误消息中获取有关数据库的信息

  • 基于联合的SQL注入:依赖于攻击者能够将UNION ALL被盗信息的结果与合法结果连接起来。

这两种技术都依赖于攻击者修改应用程序发送的SQL,以及浏览器中显示的错误和返回的信息。如果应用程序开发人员或数据库开发人员无法正确地参数化他们在查询中使用的值,那么它会成功。两者都是试错法,可以检测到错误。

盲注入

也称为推理SQL注入,盲注入攻击不会直接从目标数据库中显示数据;相反,攻击者会仔细检查行为中的间接线索。HTTP响应中的详细信息,某些用户输入的空白网页以及数据库响应某些用户输入需要多长时间,这些都可以是线索,具体取决于攻击者的目标。他们还可以指向攻击者尝试的另一个SQLi攻击途径。

带外注入

这种攻击有点复杂,当攻击者无法在单个直接查询 - 响应攻击中实现其目标时,攻击者可能会使用此攻击。通常,攻击者会制作SQL语句,这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式,攻击者可以收集数据或可能控制数据库的行为。

二阶注入就是一种带外注入攻击。在这种情况下,攻击者将提供SQL注入,该注入将由数据库系统的单独行为存储和执行。当二级系统行为发生时(它可能类似于基于时间的作业或由其他典型管理员或用户使用数据库触发的某些事情)并且执行攻击者的SQL注入,那就是当“伸出”到系统时攻击者控制发生了。

如何防止SQL注入攻击?

以下建议可以帮助防止SQL注入攻击成功:

不要使用动态SQL

避免将用户提供的输入直接放入SQL语句中;最好使用准备好的语句和参数化查询,这样更安全。

不要将敏感数据保留在纯文本中

加密存储在数据库中的私有/机密数据;这样可以提供了另一级保护,以防攻击者成功地排出敏感数据。

限制数据库权限和特权

将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。

避免直接向用户显示数据库错误

攻击者可以使用这些错误消息来获取有关数据库的信息。

对访问数据库的Web应用程序使用Web应用程序防火墙(WAF)

这为面向Web的应用程序提供了保护,它可以帮助识别SQL注入尝试;根据设置,它还可以帮助防止SQL注入尝试到达应用程序(以及数据库)。

定期测试与数据库交互的Web应用程序

这样做可以帮助捕获可能允许SQL注入的新错误或回归。

将数据库更新为最新的可用修补程序

这可以防止攻击者利用旧版本中存在的已知弱点/错误。

总结:SQL注入是一种流行的攻击攻击方法,但是通过采取适当的预防措施,例如确保数据加密,保护和测试Web应用程序,以及您是最新的补丁程序,您可以采取有意义的步骤来保持您的数据安全。


作者:duxf100

原文链接:https://www.cnblogs.com/duxf100/p/12196893.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 9 月 5 日消息,当地时间上周六,美国国家航空航天局 (NASA) 再次取消太空发射系统(SLS)火箭的既定发射计划,这是 NASA 在一周内第二次取消 SLS 火箭发射。NASA 官员们称,取消发射只是暂时的。而大部分业内人士表示,考虑到对整个登月计划的重要性,NASA 的谨慎是明智之举。NASA 高管们表示支持周六取消火箭发射的决定,并表示将准备等待更长时间,在弄清楚氢燃料泄漏的原因并彻底解决这一问题后,本月晚些时候或 10 月份再次尝试发射。NASA 局长比尔 纳尔逊 (Bill Nelson) 在周六下午举行的新闻发布会上说,“两次取消的成本显然要比一次失败要低得多。”虽然有近 10...
            0 0 1339
            分享
          • 1、老师我想从手工测试到自动化测试,但网上资料多但乱,有点不知从何下手,想问下你有什么建议吗?用心,用心了就肯定不会乱,首先一定要设立目标,我要干什么,我要通过什么途径去达到这个目标,举个例子,自动化测试无非就是用一款自动化测试工具通过一门语言去达到自动测试一个软件/应用的工作,那么选一款市场份额最高的工具+一门最流行且易学的语言+一个能触手可得软件/应用练手+你的努力,就能达到你的目标。小建议:selenium+python/java+baidu/某论坛网站/某社交网站2、什么程度的自动化测试比较适合持续集成?smoke?还是基本机能测试?还是可以更深度的自动化测试?都可以,我司目前在跑的就...
            0 1 1736
            分享
          • 在项目过程中,测试同学会发现大量的bug,但同时也不可避免的会存在一些遗漏的bug。为了能够减少遗漏bug的现象,我们需要针对常见bug的问题进行总结,从教训中积累经验,总结方法,从而提高测试的覆盖度,提升产品的整体质量。以下思维导图供测试参考。
            0 0 2841
            分享
          •   之所以写这一篇文章,是突然想起来曾经在测试过程中被开发嘲讽过,事情是这样的,当时发现了一个疑似前端的Bug就草草提交到了禅道,结果刚来的女前端看到了就有点生气地问我为啥不查清到底是前后端问题就直接派给她前端了,因为那个问题其实是后端的。而且她还抛出了一句,她们以前公司的测试都是能准确分清前后端的问题再指派的。从那之后我就长了个记性,凡是遇到的Bug都尽量搞清楚到底是前后端哪边的问题再具体指派到开发。相信很多人应该也有过类似的经历,但是可能为了快速测试或者因为不太会定位前后端问题而直接将Bug随便挂到了某个开发头上,聪明一点的呢直接挂到了开发组长头上让他重新指派!其实这样对自身的成长以及塑造...
            0 0 780
            分享
          •   很多小伙伴在了解到软件测试这个行业之后,都免不了在各个平台上进行了解。但是在了解到性能测试之后,都开始一头雾水。在软件测试中,性能测试是一个非常重要的阶段,所以很多学生不太了解性能测试包括什么。  下面小编将分析性能测试包括哪些内容:性能测试主要分为哪些类别?  1.负载测试:  模拟实际软件系统的负载条件,通过连续加载或其他加载方式找出性能指标变化的拐点。检查系统的行为和特性,发现系统可能存在的性能问题,估计系统的一般性能指标(并发数)。  2.压力测试:  模拟一定负载条件下的长期运行,软件系统能否正常运行.稳定运行,系统性能指标是否在预期范围内。它还可以测试系统是否具有良好的容错能力...
            0 0 570
            分享
      • 51testing软件测试圈微信