gpt4 book ai didi

sql - 使用sql server参数化输入?

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

我想参数化我的存储过程的输入以防止 sql 注入(inject)。问题是我的数据库没有应用程序(它只是用于学校)&因为没有像 C# 等客户端语言,我必须用 sql 本身来做。我做了这个

ALTER procedure [dbo].[drop_tt]
@ss varchar(40)
as
EXEC sp_executesql N'SELECT *
FROM tt
whERE ss = @Ss', N'@ss varchar(40)', @ss

但是当我执行这条语句时,tt 表被删除了:(exec drop_tt 'www';drop table tt--'

有人可以帮忙吗?

最佳答案

简而言之:您为什么要更改 sp?您只需要创建一个参数化存储过程,例如:

CREATE PROCEDURE uspGetAddress @City nvarchar(30)
AS
SELECT *
FROM AdventureWorks.Person.Address
WHERE City = @City
GO

看看这个很simple tutorial ,您无需更改程序。

编辑:我的方法是摆脱语句 EXEC sp_executesql 和以 drop 开头的命名。只需尝试简化主体中的存储过程执行语句即可。

关于sql - 使用sql server参数化输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13878557/

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