【发布时间】:2018-10-06 15:44:39
【问题描述】:
我正在评估为我的 sp 进行 SQL 注入的可能性。
我曾尝试使用它进行 SQL 注入,但没有成功注入(意味着注入文本已正常插入到表中):
data'; DROP TABLE my_table; --
我应该如何尝试 SQL 注入?还是 SP 非常安全,以某种方式阻止了 SQL 注入?
我的减SP如下:
@ID int,
@AIType varchar(1),
@parent varchar(20),
@child varchar(20),
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for procedure here
BEGIN TRY
UPDATE AI_Grouping
SET AIType=@AIType,
parent=@parent,
child=@child,
WHERE ID=@ID
END TRY
BEGIN CATCH
-- Catch exceptions
END CATCH
END
编辑:
如果有帮助 - 在前端,我有一个与 SP 变量类型一致的字段长度验证。有些字段最多 8 个字符,有些字段最多 20 个字符(如上例)。也许我上面尝试的注入示例是一个不好的示例,因为长度超过 20 个字符...... 最终的问题是,我的 SP 是否容易受到 SQL 注入的攻击?
【问题讨论】:
-
对 SP 执行 SQL 注入的唯一方法是使用动态查询并在其上连接 varchar 参数。没有动态查询的存储过程是预编译的,所以不能带参数改变命令。
-
感谢@JorgeCampos 的评论。你是想说我的 SP 不会受到 SQL 注入的影响吗?
-
有了这个代码,是的。
-
@JorgeCampos 太棒了!谢谢!
标签: oracle stored-procedures sql-injection