/xoops/banners.php err:找不到有效安全的權票
/xoops/banners.php 按下 Email Stats 會發生 _ER_SEC_NOTOKENFOUND 的錯誤
define("_ER_SEC_NOTOKENFOUND", "在 session 中找不到有效安全的權票");
原因是在按下 Email Stats 後,Security token 送出 $_REQUEST['t'],而在 validateToken 中卻是接收 $_REQUEST['XOOPS_TOKEN_REQUEST'],第十行為修正錯誤的程式碼
- /xoops/class/xoopssecurity.php
- function validateToken($token = false, $clearIfValid = true)
- {
- global $xoopsLogger;
- if ( file_exists(XOOPS_ROOT_PATH."/language/".$GLOBALS['xoopsConfig']['language']."/error.php") ) {
- include_once XOOPS_ROOT_PATH."/language/".$GLOBALS['xoopsConfig']['language']."/error.php";
- } else {
- include_once XOOPS_ROOT_PATH."/language/english/error.php";
- }
- $_REQUEST['XOOPS_TOKEN_REQUEST'] = isset($_REQUEST['XOOPS_TOKEN_REQUEST']) ? $_REQUEST['XOOPS_TOKEN_REQUEST'] : $_REQUEST['t'];//修正security token抓不到的問題
- $token = ($token === false) ? @$_REQUEST['XOOPS_TOKEN_REQUEST'] : $token;
- if (empty($token) || empty($_SESSION['XOOPS_TOKEN_SESSION'])) {
- $xoopsLogger->addExtra('Token Validation', _ER_SEC_NOTOKENFOUND);
- $this->setErrors(_ER_SEC_NOTOKENFOUND);
- return false;
- }
但除非是安全性或其他必要修正,核心儘量不要去動到,所以我選擇修改
- /xoops/banners.php
- $_REQUEST['XOOPS_TOKEN_REQUEST'] = isset($_REQUEST['XOOPS_TOKEN_REQUEST']) ? $_REQUEST['XOOPS_TOKEN_REQUEST'] : $_REQUEST['t'];//修正security token抓不到的問題 by shinn 2006/07/22
- switch ( $op ) {
- case "click":
其實這一隻程式 banners.php 除了 security token 的問題以外,還有另一個問題是每一個連結都包含了明文的密碼,雖然這個密碼對於整個系統的安全性比較小,但是卻能更改廣告商的廣告連結位址,想要修正的人可以下載
Xoops banner.php 錯誤修正,下載後更改檔案名稱為 banners.php 後,取代 /xoops/banners.php 即可
