XoopsSecurity

日期 2010年08月12日 22:00:00 | 新聞類別: 模組開發

原始出處 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 檢查。





本篇新聞來自:XOOPS Site
https://www.xoops.org.tw

本篇新聞的連結網址是:
https://www.xoops.org.tw/modules/news/article.php?storyid=14