一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

如何將Oracle10g內置的安全特性用于PHP

時(shí)間:2024-10-20 02:17:28 Oracle認證 我要投稿
  • 相關(guān)推薦

如何將Oracle10g內置的安全特性用于PHP

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

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

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

  對數據庫端安全性的需求

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

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

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

  怎么才能防止該情況的發(fā)生呢?最簡(jiǎn)單的方法就是徹底限制公共數據庫帳戶(hù)修改數據的權限。我們來(lái)看看 Oracle 是如何解決這個(gè)問(wèn)題的。

  Oracle 安全性基本概述

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

  ·驗證和用戶(hù)帳戶(hù)

  ·權限

  ·角色

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

  角色。 Oracle 角色是一個(gè)權限的有名集。盡管可以直接授予用戶(hù)帳戶(hù)權限,但使用角色可以極大簡(jiǎn)化用戶(hù)管理,尤其是需要管理大量用戶(hù)時(shí)。創(chuàng )建易管理的小角色,然后根據用戶(hù)的安全級別授予用戶(hù)一個(gè)或多個(gè)角色,這樣做的效率非常高。更不用說(shuō)修改權限變得如何簡(jiǎn)單了 — 只需修改角色關(guān)聯(lián)的角色即可,無(wú)需修改每個(gè)用戶(hù)帳戶(hù)。

  為了簡(jiǎn)化新用戶(hù)創(chuàng )建初期的工作,Oracle 自帶了三個(gè)預定義的角色:

  ·CONNECT 角色 — 該角色使用戶(hù)可以連接數據庫以及執行基本的操作,如創(chuàng )建自己的表。默認情況下,該角色不能訪(fǎng)問(wèn)其他用戶(hù)的表。

  ·RESOURCE 角色 — RESOURCE 角色與 CONNECT 角色相似,但它允許用戶(hù)擁有較多的系統權限,如創(chuàng )建觸發(fā)器或存儲過(guò)程。

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

  使用中的授權和權限

  在本部分中,我們將討論如何使用 Oracle 的授權和權限來(lái)提高本文開(kāi)頭部分討論的那個(gè)簡(jiǎn)單 CMS 示例的安全性。假定,提供給應用程序用戶(hù)的內容存儲在 WEB_CONTENT 表中。

  首先,創(chuàng )建該表。啟動(dòng) Oracle 數據庫特別版,以系統管理員身份登錄。如果還沒(méi)有釋放示例 HR 用戶(hù),請將其釋放。按照特別版安裝附帶的入門(mén)指南中的指示操作。請注意,默認情況下,HR 用戶(hù)被賦予 RESOURCE 角色。在這里,賦予該用戶(hù) DBA 角色,這樣就可以使用該帳戶(hù)管理 CMS 應用程序的數據庫方面了。當然,不會(huì )使用 HR 用戶(hù)帳戶(hù)進(jìn)行在線(xiàn)訪(fǎng)問(wèn),只用它管理數據庫。

  現在,可以使用對象瀏覽器或通過(guò)執行 SQL Commands 窗口創(chuàng )建新表。下面是創(chuàng )建該表的代碼:

CREATE USER cms_user IDENTIFIED BY cms_user;
CREATE USER cms_editor IDENTIFIED BY cms_editor;

  (出于簡(jiǎn)化的目的,此處的口令與用戶(hù)名對應。)

  為了讓這兩個(gè)帳戶(hù)都登錄數據庫,我們需要賦予它們 CONNECT 角色。為此,在 XE 圖形界面的 Administration/Database Users 部分選中用戶(hù)信息下的 CONNECT 復選框,或執行以下命令:

ORA-00942:table or view does not exist

  為了訪(fǎng)問(wèn)數據或僅是看到表,需要授予 CMS_USER 和 CMS_EDITOR 帳戶(hù)對 WEB_CONTENT 表的只讀權限:

INSERT INTO hr.web_content (page_id,page_content) VALUES (1,'hello world');

  將產(chǎn)生錯誤消息

GRANT INSERT,UPDATE,DELETE on hr.web_content to cms_editor;

  從現在起,CMS_EDITOR 帳戶(hù)可以對 WEB_CONTENT 表執行 INSERT、UPDATE 和 DELETE 語(yǔ)句。

  您看,這有多簡(jiǎn)單!可見(jiàn)通過(guò)角色管理權限是更有效的方法。如果使用的 Oracle 數據庫不是 XE,可以執行如下操作:

  創(chuàng )建角色:

GRANT SELECT ON web_content TO reader;
GRANT INSERT,UPDATE,DELETE ON web_content TO writer;

  賦予用戶(hù)角色:

 

GRANT reader TO cms_user;
GRANT reader TO cms_editor; (they need to read too)
GRANT writer TO cms_editor;

 

  請注意,如果更改 READER 角色的定義,則這些更改會(huì )影響所有具有該角色的用戶(hù)帳戶(hù)。如果是直接將權限授予用戶(hù)的,則必須逐個(gè)更新每個(gè)用戶(hù)帳戶(hù)。

  完成上述步驟后,可以配置 PHP 應用程序,使之對由匿名 Web 用戶(hù)請求的所有數據庫連接均使用 CMS_USER 帳戶(hù),對由受口令保護的管理頁(yè)面引發(fā)的連接使用 CMS_EDITOR 帳戶(hù),F在,即使公共 Web 表單受到攻擊,該攻擊對數據庫的影響將微乎其微,這是因為 CMS_USER 帳戶(hù)僅具有只讀權限。

  結論

  在本文中,我們只是簡(jiǎn)單介紹了 Oracle 數據訪(fǎng)問(wèn)安全性的一些最基本的特性。此外,Oracle 還有許多其他特性,可把您的 Web 應用程序的安全性提高到一個(gè)新的等級 — 包括虛擬專(zhuān)用數據庫 (VPD) 和標簽安全性。

【如何將Oracle10g內置的安全特性用于PHP】相關(guān)文章:

PHP語(yǔ)言的特性盤(pán)點(diǎn)201703-29

如何將納稅籌劃應用于實(shí)際中03-09

關(guān)于深入PHP內存相關(guān)的功能特性詳解04-01

淺析通如何加強php的安全03-06

關(guān)于php面試寶典及PHP面試技巧04-02

PHP的壓縮函數03-31

php高級教程01-23

PHP如何做好最基礎的安全防范03-29

如何將地址譯成英文04-19

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看