简短说明:
不正确的应用程序验证将无效数据传递到SQL Server 2012中执行的SQL更新语句中,从而导致应用程序无法处理的服务器端错误。从数据库安全角度来看,这可以被利用吗?
背景
我不是一名全职的安全专家,并且有一个与安全相关的问题,希望有一个简单的答案。我正在调查现有的安全漏洞"现成的#34;带有"黑盒子的网络应用程序"接近并且引起了关注。该应用程序似乎无法验证几个nvarchar字段的数据输入长度,并将输入数据直接传递给数据库。即使数据违反了数据类型长度限制,应用程序也会声明所有内容都已成功提交。因为尝试写入导致服务器端出错并且数据未提交到数据库,所以这似乎是仅基于应用程序验证的语句,而不是来自数据库的任何返回信息。我无法访问Web应用程序源代码,但是想为供应商写一个理由,说明为什么他们应该将此作为最优先考虑的问题。
问题:
除了从无效的SQL插入语句中丢失输入数据的明显问题之外,可以利用SQL Server级别的数据类型长度溢出来读取或写入数据库,或创建内存占用循环会阻碍后续请求吗?
在各种编程语言中,我知道缓冲区内存溢出可以被利用来在应用程序级执行代码("粉碎堆栈"),我想知道是否在SQL Server级别执行是受控制的,只会在SQL Server级别的验证中产生错误,或者它是否可能以某种方式包含其他命令,如; DELETE FROM USERS;
或其他类似的东西,可能会引起关注。
如果您需要其他信息,请与我们联系。我想是有大量的文档可以解决这个问题,但是经过大量搜索后我无法从Google或其他堆栈答案中找到我需要的东西。也许答案只是" SQL Server 2012有足够的内部验证来防止这种情况发生。"请指出我正确的方向。谢谢!