如何在以下情况下避免DoS攻击?
CREATE OR REPLACE FUNCTION slow_function (
p_in INT
AS
BEGIN
DBMS_LOCK.sleep(p_in);
END;
)
答案 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;