2012-04-04 69 views
1

我定義的角色,並授予其只連接到數據庫,並執行特定的存儲過程。執行此查詢時,具有此角色的用戶可以看到過程的主體;隱藏存儲過程的身體?

select * from ALL_SOURCE where NAME = 'procedureName'; 

過程採用VARCHAR2參數並將它與select查詢一起使用。這是一個安全問題嗎?我應該隱瞞它或逃避參數?

回答

2

一般情況下,它只會是一個安全問題,如果你的程序是受到SQL注入。您談論轉義參數的事實意味着您可能正在執行動態SQL,並且可能容易受到SQL注入攻擊。如果是這樣的話,你需要修復程序,而不是隱藏源代碼。

如果您的存儲過程實現您認爲專有的一些業務邏輯,你可能wrap the code使得它在數據字典混淆。如果你這樣做,但是,一定要注意,在源代碼控制你的源代碼,因爲沒有辦法解開代碼一旦你把它包(嚴格來說,也有一個攻擊者可以使用它來恢復大部分的各種技術如果他們真的想要包裝來源,但它是相當安全的)。