帳號登錄
帳號:
密碼:
記住我 | 忘記密碼 | 帳號註冊
網站導覽
模組開發 : XoopsSecurity
作者 elie 於 2010年08月12日 22:00:00 (4461 次閱讀)

原始出處 http://www.xoops.org/modules/mediawiki/index.php/Dev:XoopsSecurity

 

從 XOOPS 2.0.10 版開始新增了一個處理安全性相關的類別XoopsSecurity。

這個類別可以在Xoops 核心與模組內使用,處理的方式是在表單中增加一個"token"。

如何運作?

這個方式是在輸入表單中增加一個由系統產生的一個獨特的、幾乎無法猜測的值保存在使用者的會談(session),並作為隱藏變量形式的token。當表單提交時,處理頁面可以檢查表單所提供的token 值是否相等於使用者會談中的值。如果不相同則回傳錯誤。

如何在我的模組中使用?

根據你模組的實作方式,共有以下幾種使用方式:

表單端

1) 使用XoopsForm 時複寫類別的建構式,輸入第五個參數– true,表示增加一個token,預設值false 表示在表單中不使用token。

2) 如果不使用XoopsForm 類別而直接將HTML 寫在PHP 或Smarty 樣版內的話,可以在HTML 中新增一個token 欄位並將值設定為$GLOBALS['xoopsSecurity']->getTokenHTML() – 這個函式會回傳XoopsFormHiddenToken::render() 的結果,可以在PHP 或是在樣版內指定給$xoopsTpl 的方式使用。

接收端

在接收端,可以呼叫$GLOBALS['xoopsSecurity']->check() 檢查token 是否正確,這個函式會在授權更改資料庫或類似動作之前回傳true 或false。

何時使用?

當你有會更改資料庫內容的表單時就使用。特別是這個表單只有讓有特別授權的使用者使用時。

我在我的網站中使用模組xxx 而這個模組沒有使用token。這個模組是不安全的嗎?

並沒有直接關係,雖然這個主題有相關的討論。如果透過檢查HTTP REFERER(XOOPS 預設使用)來決定連線是否來自自己的網域是可以阻擋一些惡意的攻擊。然而使用HTTP REFERER 檢查對你的使用者而言並不友善,因為使用者會因為你的網站而需要去更改他們的防火牆設定。使用token 可以讓你的網站更加堅固而不必使用referer 檢查。


可列印模式 轉寄給朋友

The XOOPS organisation ("XOOPS") is committed to protecting the privacy of users of the XOOPS.org sites.
The website used Ver.2.4.5 POWERED BY XOOPS PROJECT.