睡眠功能PLSQL中的DoS

时间:2016-01-06 12:53:06

标签: plsql dos

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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;