SQL注射攻击对企业安全构成了巨大的潜在威胁。一旦攻击成功,黑客可以利用它来伤害你的网络,访问你的数据,甚至控制你的计算机。
什么是什么SQL注入?
SQL注入的原理很简单。当应用程序输入客户数据时,恶意的人将有机会注入故意编写的数据,这将导致输入行为SQL部分查询。
SQL注入是在Web插入表单提交或输入的查询字符串SQL用于域名或页面请求的命令,最后欺骗服务器恶意执行SQL命令。例如,许多以前的视频网站都被泄露了VIP大多数会员密码都是通过在网页表单中提交查询字符,特别容易接受SQL注入攻击。
应用程序使用应用程序input构造动态sql当语句访问数据库时,就会发生sql注入攻击。如果代码用作存储过程,包括未筛选用户输入的字符串传输,也会发生Sql注入。Sql注入可能会导致攻击者使用应用程序登录执行数据库中的命令。如果应用程序使用高特权账户连接数据库,问题将变得非常严重。在某些表格中,用户输入的内容直接用于构建(或影响)动态sql这些表单特别容易作为存储过程的输入参数sql注入攻击。然而,在编写许多网站程序时,没有判断用户输入的合法性或程序中的变量处理不当,这使得应用程序存在安全风险。这样,用户就可以提交数据库查询代码,获取一些敏感信息,或者根据程序返回的结果控制整个服务器,因此出现sql注入。
黑客OR验证过程已成功注入条件。更糟糕的是,条件' 1' = '1 '这通常是真的,所以这个SQL查询经常导致黑客绕过验证过程。
类似的使用“;”东西符号将另一个查询添加到现有查询中(此附加查询还解释了一些现有查询)。黑客可以删除您的整个列表,甚至更改列表中的数据。黑客可以用命令控制您的操作系统,以控制您的计算机,并将其用作攻击其他网络的中间站。SQL注入袭击会产生以下后果:
如何预防?SQL注入袭击?
防微杜渐,最重要的是清理数据,核实数据,不要懈怠。清理数据是指通过函数(如mysql的mysql_real_escape_string()函数)运行提交的任何数据,以确保任何威胁性字符,如“'”,不作为数据输入sql查询中。
认证是不同的。验证是为了确保数据以许可方式提交。在最基本的操作中,验证包括确保电子邮件地址@符号。当验证只接受整数时,只能提供数字,数据长度不能超过最大值。验证通常有两种方法:一种是列出危险或不受欢迎的黑名单;另一种是列出给定的字符,这需要程序员更多的时间。虽然数据可以在客户端验证,但黑客也可以修改数据,因此用户需要在服务器端验证所有数据。
然而,清洁和验证数据远远不能保证用户数据的安全。有十种方法可以帮助你预防或减缓SQL注射病毒的攻击:
1.不要相信任何人:所有用户提交的所有数据都被假定是危险的,所有数据都经过验证。
2.如果没有必要,不要使用动态SQL:包括使用准备好的句子、参数查询或保存过程。
3.更新补丁:一般程序和数据库都有黑客SQL注入使用漏洞,使用程序补丁和更新是非常必要的。
4.防火墙:我们可以考虑使用软件和设备Web应用防火墙(WAF)过滤恶意数据。好的防火墙有一套完整的默认规则,很容易随时添加新规则。WAF在发布相应的新漏洞补丁之前,可以为用户提供有效的安全保护。
5.减少攻击界面:及时处理数据库函数,避免被黑客使用。xp_cmdshell扩展保存MS SQL中间过程,使Windows命令窗口激增,并传递一个字符串进行执行,这无疑对黑客有利。xp_cmdshell扩展的Windows进程具有与SQL Server同等优先安全权限的服务账户。
6.使用适当的权限:使用管理员级权限时,除非必要,否则不要连接到数据库。使用有限的账户权限有利于数据安全和黑客权限。
7.隐私:假设您的应用程序不安全,将使用加密操作或哈希密码等机密数据,包括连接字符串,并进行相应的调整。
8.不要透露太多信息:黑客可以从错误信息中阅读大量关于数据库架构的信息,因此确保这些错误信息中显示的信息尽可能少。RemoteOnly CustomErrors该模式在本地计算机上显示冗长的错误信息,使外部黑客的坏操作只能接收不可操作的错误信息。
9.别忘了最基本的原则:经常更改应用程序账户的密码。虽然这是常识,但在现实生活中,很多人几个月甚至几年都很难更改密码。
10.**更好的软件:让代码编写人员在购买软件前检查代码,修复客户应用程序中的安全漏洞。