萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> 將Oracle 10g內置的安全特性用於PHP

將Oracle 10g內置的安全特性用於PHP

當今大多數 Web 應用程序都需要至少采用某種基本的安全策略。例如,提供用口令保護的內容的網站、僅具有管理員後端的網站、網志和個人雜志、電子商務網站、企業內聯網,等等。

構建這些類型的 Web 應用程序最常用的設計方法是將安全策略整合到 Web 應用程序的業務邏輯中,即由應用程序決定某個用戶是否有權訪問數據庫中的某個數據。在這種情形下,數據庫的角色僅為存儲數據和依請求提供數據。換句話說,如果 Web 應用程序命令數據庫提供特定信息,則數據庫會直接執行該命令而不檢查用戶的權限。

在該文中,您將學習如何利用 Oracle 內置的安全特性在數據庫級執行應用程序安全規則,以提高應用程序的整體安全性。作為附帶的好處,直接在數據庫中實現數據訪問安全不但有助於提高應用程的安全性,而且有助於降低復雜性。

對數據庫端安全性的需求

從 Web 應用程序控制數據訪問會怎麼樣?大多數情況下沒有問題;這是個不錯的解決方案,尤其是在涉及的數據為非任務關鍵或絕密的時候。許多書和在線資源中都用到了該方法。實際上,有本很受歡迎的 PHP/MySQL 書明確反對每個應用程序創建一個以上的數據庫用戶帳戶,這是因為“額外的用戶或復雜的權限會因某個操作在繼續前要檢查更多的信息而降低 MySQL 的執行速度”。確實如此;但是,在放棄將安全性整合到數據庫邏輯中的想法前可能要考慮幾件事情。我們來看以下示例。

假設創建一個內容管理系統 (CMS)。其中使用數據庫來存儲網站上發布的內容。大部分數據是公開的,允許匿名 Web 用戶讀取;但只允許編輯更改數據。使用單一數據庫帳戶訪問和修改數據庫中的記錄,並通過用口令保護僅管理員可以訪問的頁面的訪問權限用 PHP 代碼控制安全性。

如果 Web 應用程序的公共端遭受了一個諸如公共搜索表單(即編碼不夠嚴密的表單)上的 SQL 注入的攻擊,則該入侵者可能能夠對該公共帳戶可以訪問的數據庫對象執行任意 SQL 語句。當然,就這裡的情形而言,執行 SELECT 語句不會造成什麼大問題,這是因為數據本來就是公共的。但由於公共權限和管理權限使用同一數據庫帳戶,因此入侵者還能執行 UPDATE 和 DELETE 語句,甚至是從數據庫中刪除表。

怎麼才能防止該情況的發生呢?最簡單的方法就是徹底限制公共數據庫帳戶修改數據的權限。我們來看看 Oracle 是如何解決這個問題的。

Oracle 安全性基本概述

Oracle 數據庫為 Web 開發人員提供了控制數據訪問的許多方法,從管理對特定數據庫對象(如表、視圖和過程)的訪問到控制個別行或列的數據的訪問。很顯然,對 Oracle 每個安全特性或可用選項的討論超出了本文的范圍。在這裡,我們將不涉及過多細節,而僅介紹 Oracle 數據訪問安全性的最基本方面:

·驗證和用戶帳戶

·權限

·角色

驗證和用戶帳戶。 與其他數據庫一樣,請求訪問 Oracle 的每個用戶(數據庫帳戶)必須通過驗證。驗證工作可以由數據庫、操作系統或網絡服務來做。除基本的驗證(口令驗證)外,Oracle 還支持強驗證機制,如Kerberos、CyberSafe、RADIUS,等等。

角色。 Oracle 角色是一個權限的有名集。盡管可以直接授予用戶帳戶權限,但使用角色可以極大簡化用戶管理,尤其是需要管理大量用戶時。創建易管理的小角色,然後根據用戶的安全級別授予用戶一個或多個角色,這樣做的效率非常高。更不用說修改權限變得如何簡單了 — 只需修改角色關聯的角色即可,無需修改每個用戶帳戶。

為了簡化新用戶創建初期的工作,Oracle 自帶了三個預定義的角色:

·CONNECT 角色 — 該角色使用戶可以連接數據庫以及執行基本的操作,如創建自己的表。默認情況下,該角色不能訪問其他用戶的表。

·RESOURCE 角色 — RESOURCE 角色與 CONNECT 角色相似,但它允許用戶擁有較多的系統權限,如創建觸發器或存儲過程。

·DBA 角色 — 允許用戶擁有所有系統權限。

  • 共3頁:
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved