筍子工作雜記

七月 23, 2006

/xoops/banners.php err:找不到有效安全的權票

Filed under: xoops — shinnlu @ 3:42 下午

/xoops/banners.php 按下 Email Stats 會發生 _ER_SEC_NOTOKENFOUND 的錯誤
define(“_ER_SEC_NOTOKENFOUND", “No valid security token found in session");
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 即可

無迴響 »

仍無迴響。

此篇文章迴響的訂閱源料 TrackBack URL

發表迴響

Powered by WordPress