睡眠函数PLSQL中的DoS

问题描述 投票:0回答:1

以下情况如何避免DoS攻击?

CREATE OR REPLACE FUNCTION slow_function (
  p_in INT
AS
BEGIN
  DBMS_LOCK.sleep(p_in);
END;
)
plsql
1个回答
0
投票

DBMS_LOCK.SLEEP 不使用任何重要资源。 该功能没有任何特定功能可以引发拒绝服务攻击。 相反,这可能是任何人都可以执行的最安全的功能之一。

为了演示这一点,我在 PC 上运行了以下测试用例,以模拟 100 个会话同时调用该函数。 即使有 100 个会话,oracle.exe 也使用不到 1% 的 CPU。

CREATE OR REPLACE FUNCTION slow_function (
  p_in INT) RETURN NUMBER
AS
BEGIN
  DBMS_LOCK.sleep(p_in);
  RETURN 1;
END;
/

select /*+ parallel(100) */ slow_function(60) from dba_tables;

--In another session, check that statement is really using 100 sessions.
select * from v$px_process;
© www.soinside.com 2019 - 2024. All rights reserved.