福安市教育局建设网站,c 还可以做网站,我的世界做墙纸网站,同城推广前言
点击此处即可获得282G网络安全学习资料
我们生活在数据的黄金时代。有些公司将其分析为更好的自己#xff0c;有些公司为了获利而进行交易#xff0c;没有一家公司因其价值而自由放弃 - 对于他们的业务和犯罪分子。
SQL#xff08;结构化查询语言#xff09;是一种…前言
点击此处即可获得282G网络安全学习资料
我们生活在数据的黄金时代。有些公司将其分析为更好的自己有些公司为了获利而进行交易没有一家公司因其价值而自由放弃 - 对于他们的业务和犯罪分子。
SQL结构化查询语言是一种非常流行的与数据库通信的方式。虽然许多新数据库使用非SQL语法但大多数仍然与SQL兼容。这使得SQL成为任何想要访问数据的人的便利工具无论他们的动机如何。
SQL注入或SQLi攻击已经存在了近20年。他们永远不会停止使用Imperva的Web应用程序防火墙WAF。所以我们有丰富的数据和经验可供分享。在这篇文章中我们将分享Imperva保护下数千个网站的最新统计数据和图表以及攻击示例以及保护网站的方法。 基于SQL的应用程序的常见攻击
SQL Injection是一种用于攻击应用程序的代码注入技术。攻击者可以使用工具脚本甚至浏览器将SQL语句插入应用程序字段。然后由数据库引擎执行这些语句。此类攻击通常用于 欺骗身份篡改现有数据窃取数据销毁数据更改数据库权限 应用程序背后的数据通常是关键任务这就是SQL注入攻击被认为非常严重的原因。
来自Imperva WAF的统计数据
Imperva的WAF每天都会在我们保护的网站上减少数百万次SQL注入攻击。我们保护的网站中至少有80每个月都会受到攻击。我们的数百个网站每天都会面临SQLi攻击。
您可以在下面找到我们监控的攻击中使用的国家行业和工具的统计数据。 图1网站行业分布 - 由于BakerHostetler的2018年网络安全报告指出它是数据泄露最严重的行业因此受攻击程度最高的行业是健康行业这一点非常有意思但并不奇怪。
没有图示的是受攻击最多的数据库按递减顺序OraclePostgreSQLMySQL和MongoDB。同时受攻击最多的平台是WordPressDrupalJoomla和Quest。 图2受攻击网站的国家/地区与攻击来源 - 看到黑客倾向于攻击自己国家/地区内的网站并不奇怪。当然这有可能恰恰相反 - 这些结果可能反映了黑客使用在他们攻击的国家/地区拥有端点的V** /代理以逃避地理阻塞。
每天大量使用SQLi公共漏洞。例如CVE-2017-8917和CVE-2015-7858都是Joomla SQLi公共漏洞这些漏洞在我们监控的66,000个事件中使用。
图3顶级漏洞扫描程序 - 由于我们计算事件而非请求每个扫描程序生成的有效负载数量都没有影响。尽管SQLi Dumper取得了成功但Joomla扫描仪并不落后。
我们每月监控数万个攻击性IP并使用攻击分析来查找恶意IP并防范它们。我们通过分析过去几个月的攻击IP收集了一些有趣的统计数据 图4日复一日尝试SQLi攻击的IP。蓝色在当天和当天尝试SQLi攻击的IP的百分比在当天尝试SQLi攻击的IP中。橙色包含由这些攻击IP发送的SQLi尝试的请求的百分比包含SQLi尝试的总请求数。
令人好奇的是即使平均每天不到三分之一的IP攻击蓝线他们的请求构成了超过80的SQLi请求橙色线。这可能是由于各种漏洞扫描程序正在进行扫描。这些工具倾向于轰炸目标以寻找漏洞这解释了高IP到请求比率。 图5顶级攻击工具 - 非常通用且广泛使用因此cURL占据如此重要的位置并不奇怪。但是深入分析显示与cURL一起发送的大多数可疑请求实际上是攻击后检查即被阻止的黑客然后使用cURL来测试他们是否仍然
可以访问该网站。cURL紧随其后的是Python - 黑客的首选武器以及Ruby - 用于编写Metasploit的语言代码。
攻击示例
以下是我们最近一个月跟踪的一些流行攻击
如何保护您的应用程序免受SQL注入
有许多方法可以保护您的应用程序免受SQL注入攻击。有些应该在应用程序开发期间使用其他应该在部署应用程序后使用。
开发阶段 使用预准备语句 - 一种“模板化”SQL以使其适应SQL注入的方法。只有某些输入值可以发送到数据库因此无法运行模板化语句以外的语句。稍后使用不同协议传输的值不像语句模板那样编译。因此不能发生SQL注入。 这里有两个Python代码示例包含和不包含预准备语句。该代码基于MySQL连接器驱动程序dev.mysql.com/doc/connect… def add_employee(id: int, email: str): sql “””INSERT INTO employees (id, email) VALUES (%s, %s)””” cursor connection.cursor(preparedTrue) cursor.execute(sql, (id, email)) cnx.commit() cursor.close() Python代码示例。这些值将发送到与SQL文本分开的“执行方法”。 def add_employee(id: int, email: str): sql f”””INSERT INTO employees (id, email) VALUES ({id}, {email})””” cursor connection.cursor() cursor.execute(sql) 上面是没有预准备语句的Python代码示例。电子邮件可能包含可由数据库引擎执行的SQL注入语句。 除了预处理语句之外还有其他方法可以在开发和部署应用程序期间阻止SQL注入 1.消毒 - 摆脱任何可能是恶意的特殊字符单词或短语。例如删除保留字SELECT或CONTACT或删除短语WAIT FOR DELAY或DROP TABLE。这不是最佳实践但在某些情况下它可能很有用。 2.转义 - 转义在SQL中具有特殊含义的字符。例如用两个单引号替换双引号。这是一种简单但易于出错的方式。 3.转义和模式检查 - 可以验证数字和布尔参数数据类型而字符串参数可以限制为模式。 4.数据库权限限制 - 将应用程序用户的权限限制为仅需要的权限因为它可能有助于降低攻击的有效性。 后开发 - 应用程序安全性
漏洞扫描程序 - 这些可以检测应用程序中的SQL注入漏洞以后可以由开发团队修复。请记住应用程序会不断变化 - 因此您应定期运行扫描程序。Web应用程序防火墙 - WAF还可以检测和阻止对您的应用程序的攻击。
总结
保护产品免受SQL注入是必不可少的以确保其正常运行并防止数据泄露。
当您编写访问数据库的代码时考虑从一开始就防止SQL注入是一种很好的做法。这是防止这些漏洞发生的最佳时机而不是以后修补它们。开发过程应包括针对SQL注入的测试然后是外部扫描程序。 最后WAF是您产品保护的重要补充。它可以保护您免受错过的漏洞同时让您有时间尽可能地修补它们。
点击此处即可获得282G网络安全学习资料