2016-03-03 33 views
1

我正在創建一個數據庫連接類,它將訪問config.php中定義的變量或常量。但是,如果我要創建一個主題和插件引擎,我將如何僅允許MySQLi連接類訪問配置,而不允許插件/主題訪問違反網站用戶安全性的信息。MySQLi與config.php中變量的連接

此前,我只是在配置中將主機,用戶名,密碼和數據庫定義爲常量,然後將配置文件包含在包含所有核心網站文件的文件中,例如核心功能文件,數據庫連接等 - 我相信這是如何受歡迎的CMS如Wordpress等,它呢?如果不是,請糾正我。

如果我將配置包含在數據庫類中,但隨後將數據庫類包含在網站中,則配置可以通過主題和插件內的自定義代碼訪問 - 這不可能發生。

我該怎麼做呢?我想不出任何其他的方式。

感謝, 基隆

+0

記住PHP是一個保存爲文本,如果有人想看看他們可以。除非你加密數據在你最終放在哪個文件中 – RiggsFolly

回答

1

我怎麼會只允許連接庫MySQLi類訪問配置

你不知道。相反,你應該給你的MySQLi包裝類它需要的所有設置。即:

class MySQLiWrapper { 
    public function __construct($server, $username, $password, $database) {..} 
} 

至於內部安全。 PHP代碼沒有沙箱,任何腳本都可以對任何文件執行fopen並讀取其內容。想想你想如何接近安全。

+1

添加到此答案。 'wpdb'類(與db交互的類)對象是全局可用於wordpress範圍內的任何東西的。你的主題/插件甚至不需要知道你的數據庫主機/用戶/密碼/數據庫名稱。如果他們想知道它,他們將能夠得到它。防止發生任何不良事件的方法是讓用戶使用wp數據庫,該用戶不能用於從遠程主機進行連接,並且只能訪問wp數據庫而不需要任何不必要的權限。 –

+0

所以你的意思是? $ dbc = new dbc($ host,$ username,$ password,$ database); – Sutton

+0

@IgorYavych所以,如果安裝了插件/主題,它可以訪問Wordpress的數據庫憑證? – Sutton