gpt4 book ai didi

sql-server-2008 - 我是否在 SQL Server 中发现了 SQL 注入(inject)错误?

转载 作者:行者123 更新时间:2023-12-03 18:12:16 25 4
gpt4 key购买 nike

所以我在玩我的微软 SQL Server 2008 应用程序,看看它对 SQL 注入(inject)的保护有多好。该应用程序允许用户在数据库中创建 View 。

现在考虑以下几点:

create view dbo.[]]; drop database foo--] as select 1 as [hi!]

这将创建一个名为 ]; drop database foo-- 的 View 。 .它是有效的,您可以从中选择(显然返回数字 1)。

奇怪的事情#1:

在 SQL Management Studio 中,查询 SELECT [hi!] FROM [dbo].[]]; drop database foo--]红色下划线表示不正确,声称对象名称无效。然而,它执行并返回 1。

奇怪的事情#2:

调用 OBJECT_ID(']; drop database foo--')产生 NULL(这意味着对象不存在),但以下查询正确返回有关 View 的信息:
select * from sys.objects where name = ']; drop database foo--';

是那些错误还是我错过了一点?

最佳答案

你错过了重点。 SQL Server 无法保护自己免受 SQL 注入(inject)的影响——如果有人可以直接访问您的数据库,那么您已经被控制了。这是你的申请这需要通过参数化查询来防止 SQL 注入(inject),并防止此类语句进入数据库。

关于sql-server-2008 - 我是否在 SQL Server 中发现了 SQL 注入(inject)错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2336008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com