孤魂 发表于 2009-8-26 18:57:29

Joomla 登录及发贴 "Invalid Token" 解决办法

其实这个东东呀,直接用火车头写正确了登录随机值就可以了,但是说,他的token的name属性写在后面去了,所以这种登录随机值不好获取,那么我们就可以这样做,取消全局验证Token的功能!

这样的话就可以打开 \libraries\joomla\environment\request.php 这个文件,从435行左右开始修改,其实就是将大概在 447 行左右的 return false; 改为 return true; ,就是说不管这个token的值正确与否,都返回true即可!      function checkToken( $method = 'post' )
      {
                $token      = JUtility::getToken();
                if(!JRequest::getVar( $token, '', $method, 'alnum' )) {
                        $session = JFactory::getSession();
                        if($session->isNew()) {
                              //Redirect to login screen
                              global $mainframe;
                              $return = JRoute::_('index.php');
;                              $mainframe->redirect($return, JText::_('SESSION_EXPIRED'));
                              $mainframe->close();
                        } else {
                              return false;
                        }
                } else {
                        return true;
                }
      }
改为      function checkToken( $method = 'post' )
      {
                $token      = JUtility::getToken();
                if(!JRequest::getVar( $token, '', $method, 'alnum' )) {
                        $session = JFactory::getSession();
                        if($session->isNew()) {
                              //Redirect to login screen
                              global $mainframe;
                              $return = JRoute::_('index.php');
;                              $mainframe->redirect($return, JText::_('SESSION_EXPIRED'));
                              $mainframe->close();
                        } else {
                              return true;
                        }
                } else {
                        return true;
                }
      }
这种修改,一般来说没有什么风险,但是如果有风险,嘿嘿,就只能认了!

孤魂 发表于 2009-8-26 18:57:50

安全一点的修改方法

\administrator\components\com_content\controller.php
将这个文件里面的所有JRequest::checkToken() or jexit( 'Invalid Token' );替换成//JRequest::checkToken() or jexit( 'Invalid Token' );
这样只是删除掉发布文章这块的token值验证,好了,完了,最方便的方法还是写发布接口,嘿嘿,一般人我不告诉他!

懷念過去↑文 发表于 2009-8-26 19:38:33

{:4_180:}

专业收费采集 发表于 2009-8-27 19:03:37

{:4_180:}我很支持你 孤魂

pandyx 发表于 2009-8-28 12:25:27

谢谢了,回去试一下!!!!!!!!!!!!!!!!!!1
页: [1]
查看完整版本: Joomla 登录及发贴 "Invalid Token" 解决办法