• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 如何將Oracle10g內(nèi)置的安全特性用于PHP

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

        如何將Oracle10g內(nèi)置的安全特性用于PHP

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

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

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

          對(duì)數(shù)據(jù)庫端安全性的需求

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

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

          如果 Web 應(yīng)用程序的公共端遭受了一個(gè)諸如公共搜索表單(即編碼不夠嚴(yán)密的表單)上的 SQL 注入的攻擊,則該入侵者可能能夠?qū)υ摴矌艨梢栽L問的數(shù)據(jù)庫對(duì)象執(zhí)行任意 SQL 語句。當(dāng)然,就這里的情形而言,執(zhí)行 SELECT 語句不會(huì)造成什么大問題,這是因?yàn)閿?shù)據(jù)本來就是公共的。但由于公共權(quán)限和管理權(quán)限使用同一數(shù)據(jù)庫帳戶,因此入侵者還能執(zhí)行 UPDATE 和 DELETE 語句,甚至是從數(shù)據(jù)庫中刪除表。

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

          Oracle 安全性基本概述

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

          ·驗(yàn)證和用戶帳戶

          ·權(quán)限

          ·角色

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

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

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

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

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

          ·DBA 角色 — 允許用戶擁有所有系統(tǒng)權(quán)限。

          使用中的授權(quán)和權(quán)限

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

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

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

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

          (出于簡化的目的,此處的口令與用戶名對(duì)應(yīng)。)

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

        ORA-00942:table or view does not exist

          為了訪問數(shù)據(jù)或僅是看到表,需要授予 CMS_USER 和 CMS_EDITOR 帳戶對(duì) WEB_CONTENT 表的只讀權(quán)限:

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

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

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

          從現(xiàn)在起,CMS_EDITOR 帳戶可以對(duì) WEB_CONTENT 表執(zhí)行 INSERT、UPDATE 和 DELETE 語句。

          您看,這有多簡單!可見通過角色管理權(quán)限是更有效的方法。如果使用的 Oracle 數(shù)據(jù)庫不是 XE,可以執(zhí)行如下操作:

          創(chuàng)建角色:

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

          賦予用戶角色:

         

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

         

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

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

          結(jié)論

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

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

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

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

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

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

        淺析通如何加強(qiáng)php的安全03-06

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

        PHP的壓縮函數(shù)03-31

        php高級(jí)教程01-23

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

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

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲日本欧洲精品 | 一级做a过程免费在线观看 综合色天天鬼久久鬼色 | 色婷婷七月综合丁香中文字幕 | 午夜成人亚洲理论片在线观看 | 亚洲字幕一区二区 | 亚洲无线码高清在线观看 |

            如何將Oracle10g內(nèi)置的安全特性用于PHP

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

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

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

              對(duì)數(shù)據(jù)庫端安全性的需求

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

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

              如果 Web 應(yīng)用程序的公共端遭受了一個(gè)諸如公共搜索表單(即編碼不夠嚴(yán)密的表單)上的 SQL 注入的攻擊,則該入侵者可能能夠?qū)υ摴矌艨梢栽L問的數(shù)據(jù)庫對(duì)象執(zhí)行任意 SQL 語句。當(dāng)然,就這里的情形而言,執(zhí)行 SELECT 語句不會(huì)造成什么大問題,這是因?yàn)閿?shù)據(jù)本來就是公共的。但由于公共權(quán)限和管理權(quán)限使用同一數(shù)據(jù)庫帳戶,因此入侵者還能執(zhí)行 UPDATE 和 DELETE 語句,甚至是從數(shù)據(jù)庫中刪除表。

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

              Oracle 安全性基本概述

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

              ·驗(yàn)證和用戶帳戶

              ·權(quán)限

              ·角色

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

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

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

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

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

              ·DBA 角色 — 允許用戶擁有所有系統(tǒng)權(quán)限。

              使用中的授權(quán)和權(quán)限

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

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

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

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

              (出于簡化的目的,此處的口令與用戶名對(duì)應(yīng)。)

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

            ORA-00942:table or view does not exist

              為了訪問數(shù)據(jù)或僅是看到表,需要授予 CMS_USER 和 CMS_EDITOR 帳戶對(duì) WEB_CONTENT 表的只讀權(quán)限:

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

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

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

              從現(xiàn)在起,CMS_EDITOR 帳戶可以對(duì) WEB_CONTENT 表執(zhí)行 INSERT、UPDATE 和 DELETE 語句。

              您看,這有多簡單!可見通過角色管理權(quán)限是更有效的方法。如果使用的 Oracle 數(shù)據(jù)庫不是 XE,可以執(zhí)行如下操作:

              創(chuàng)建角色:

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

              賦予用戶角色:

             

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

             

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

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

              結(jié)論

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