Changeset 192

Show
Ignore:
Timestamp:
03/21/07 20:41:09 (14 years ago)
Author:
exi
Message:

Fixed several potential security issues with unchecked variables.
Added .htaccess files to common/ and mods/.
Modified the sync module to not send item data anymore.

Location:
dev
Files:
3 added
7 modified

Legend:

Unmodified
Added
Removed
  • dev/common/admin/admin_sync.php

    r190 r192  
    3131    } 
    3232 
    33     $content_file .= 'ITEMS_START'; 
     33    if (isset($_REQUEST['itm_update'])) 
     34    { 
     35        $content_file .= 'ITEMS_START'; 
     36    } 
     37    /* 
    3438    $qry->execute("select itm_name, itm_externalid, itm_value from kb3_items where itm_value != 0"); 
    3539    while ($data = $qry->getRow()) 
     
    3741        $content_file .= '§'.$data['itm_name'].'|'.$data['itm_externalid'].'|'.$data['itm_value'].'-'; 
    3842    } 
     43    */ 
    3944 
    4045    $content_file = gzdeflate($content_file); 
    4146 
    4247    $http->set_postdata('data', $content_file); 
    43     $http->set_useragent("EVE-KB SYNC (VER ".KB_VERSION.")"); 
     48    $http->set_useragent('EVE-KB SYNC (VER '.KB_VERSION.')'); 
    4449    $http->set_header('X-KBHost: '.base64_encode(KB_HOST)); 
    4550 
    46     // wait 90s for processed answer 
    47     $http->setSockettimeout(90); 
     51    // wait 30s for processed answer 
     52    $http->setSockettimeout(30); 
    4853    $file = $http->get_content(); 
    4954    $header = $http->get_header(); 
    5055 
    51     preg_match("/X-KBVersion: (.*)/", $header, $match); 
     56    preg_match('/X-KBVersion: (.*)/', $header, $match); 
    5257    $version = explode('.', trim($match[1])); 
    5358    $recv = $http->get_recv(); 
     
    6772            $html .= "getting compressed data failed, server response was:<br><pre>\n"; 
    6873            $html .= $file."</pre>\n"; 
    69             $html .= "Sent ".round($sended/1024, 2)." kB and received ".round($recv/1024, 2)." kB of data.<br>\n"; 
     74            $html .= 'Sent '.round($sended/1024, 2)." kB and received ".round($recv/1024, 2)." kB of data.<br>\n"; 
    7075        } 
    7176    } 
     
    7580 
    7681        // get all names we'll find 
    77         preg_match_all("^!(.*?)\|(.*?)-^", $data, $matches); 
     82        preg_match_all('^!(.*?)\|(.*?)-^', $data, $matches); 
    7883        $results = count($matches[1]); 
    7984        $update = new DBQuery(); 
     85        $new = 0; 
    8086        for ($i = 0; $i<$results; $i++) 
    8187        { 
    8288            $update->execute("update kb3_pilots set plt_externalid='".addslashes($matches[2][$i])."' where plt_name='".addslashes($matches[1][$i])."' limit 1"); 
     89            if (mysql_affected_rows() == 1) 
     90            { 
     91                $new++; 
     92            } 
    8393        } 
    84         $html .= "Synchronization complete, got $results new ids from server running version ".$version[0].'.'.$version[1].'.'.$version[2].'.<br/>'; 
     94        $html .= "Synchronization complete, got $new new ids and ".($results - $new)." unknown pilots from server running version ".$version[0].'.'.$version[1].'.'.$version[2].'.<br/>'; 
    8595 
    8696        if (isset($_REQUEST['itm_update'])) 
     
    147157    $html .= "<table class=kb-subtable>"; 
    148158    $html .= "<tr><td width=120><b>Update item values</b></td><td><input type=checkbox name=itm_update id=itm_update"; 
    149     $html .= " checked=\"checked\"></td></tr>"; 
     159    $html .= " ></td></tr>"; 
    150160    $html .= "<tr><td width=120><b>Overwrite local values</b></td><td><input type=checkbox name=itm_overwrite id=itm_overwrite"; 
    151     $html .= " checked=\"checked\">(If disabled only values with 0 will be overwritten)</td></tr>"; 
     161    $html .= " >(If disabled only values with 0 will be overwritten)</td></tr>"; 
    152162    $html .= '<input type="hidden" name="do" value="sync">'; 
    153163    $html .= '<tr><td width=120></td><td><input type=submit name=submit value="Synchronize now"></td></tr></table></form>'; 
  • dev/common/feed.php

    r190 r192  
    11<?php 
    2 //////////// 
    3 ////// 
    4 //////  feed writer after 
    5 //////  liq's feed syndication mod v1.5 
    6 ////// 
    7 //////////// 
    82 
    93@set_time_limit(120); 
    10 require_once('common/includes/db.php'); 
    114require_once('common/includes/class.corp.php'); 
    125require_once('common/includes/class.alliance.php'); 
     
    2417$klist->setPodsNoobShips(true); 
    2518 
    26 if ($_GET['week']) 
     19$w = intval($_GET['week']); 
     20if ($w) 
    2721{ 
    28     $klist->setWeek($_GET['week']); 
     22    $klist->setWeek($w); 
    2923} 
    3024elseif (!$_GET['lastkllid']) 
     
    3327} 
    3428 
    35 if ($_GET['year']) 
     29$y = intval($_GET['year']); 
     30if ($y) 
    3631{ 
    37     $klist->setYear($_GET['year']); 
     32    $klist->setYear($y); 
    3833} 
    3934elseif (!$_GET['lastkllid']) 
     
    4237} 
    4338 
    44 if ($_GET['lastkllid'] && method_exists($klist, 'setMinKllID')) 
     39$kid = intval($_GET['lastkllid']); 
     40if ( && method_exists($klist, 'setMinKllID')) 
    4541{ 
    46     $klist->setMinKllID($_GET['lastkllid']); 
     42    $klist->setMinKllID($kid); 
    4743} 
    4844 
     
    129125{ 
    130126    $kill = new Kill($id); 
    131     $html .= "<item> 
    132                                 <title>" . $id . "</title> 
    133                                 <description><![CDATA[ ".$kill->getRawMail()." ]]></description> 
    134                                 <guid>?a=kill_detail&amp;kll_id=".$id."</guid> 
    135                                 <pubDate>" . strftime("%a, %d %b %Y %T %Z", strtotime($timestamp)) . "</pubDate> 
     127    $html .= '<item> 
     128                                <title>'.$id.'</title> 
     129                                <description><![CDATA[ '.$kill->getRawMail().' ]]></description> 
     130                                <guid>?a=kill_detail&amp;kll_id='.$id.'</guid> 
     131                                <pubDate>'.strftime("%a, %d %b %Y %T %Z", strtotime($timestamp))."</pubDate> 
    136132                                </item>\n"; 
    137133} 
    138 $html .= "</channel></rss>"; 
     134$html .= '</channel></rss>'; 
    139135 
    140136if ($_GET['gz']) 
  • dev/common/includes/class.alliance.php

    r190 r192  
    11<?php 
    2 require_once("db.php"); 
    32 
    43class Alliance 
  • dev/common/includes/class.pilot.php

    r190 r192  
    88    function Pilot($id = 0) 
    99    { 
    10         $this->id_ = $id; 
     10        $this->id_ = intval($id); 
    1111        $this->qry_ = new DBQuery(); 
    1212    } 
     
    113113    function setCharacterID($id) 
    114114    { 
     115        $id = intval($id); 
     116        if (!$id) 
     117        { 
     118            return false; 
     119        } 
    115120        $qry = new DBQuery(); 
    116121        $qry->execute("update kb3_pilots set plt_externalid = ".$id." 
    117                        where plt_id = ".$this->id_) or die($qry->getErrorMsg()); 
     122                       where plt_id = ".$this->id_); 
    118123    } 
    119124} 
  • dev/common/index.php

    r190 r192  
    3030require_once('common/includes/class.user.php'); 
    3131require_once('common/includes/class.session.php'); 
    32 require_once('smarty/Smarty.class.php'); 
     32require_once('common/smarty/Smarty.class.php'); 
    3333 
    3434// smarty doesnt like it 
     
    3838$page = str_replace('.', '', $_GET['a']); 
    3939$page = str_replace('/', '', $page); 
    40 if ($page == '') 
     40if ($page == '' || $page == 'index') 
    4141{ 
    4242    $page = 'home'; 
     
    143143if ($docache) 
    144144{ 
    145     if (!file_exists(KB_CACHEDIR . '/' . KB_SITE)) 
    146     { 
    147         @mkdir(KB_CACHEDIR . '/' . KB_SITE); 
     145    if (!file_exists(KB_CACHEDIR.'/'.KB_SITE)) 
     146    { 
     147        @mkdir(KB_CACHEDIR.'/'.KB_SITE); 
    148148    } 
    149149 
     
    159159    $cachetime = $cachetime * 60; 
    160160 
    161     $cachefile = KB_CACHEDIR . '/' . KB_SITE . '/' . md5($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']) . '.cache'; 
     161    $cachefile = KB_CACHEDIR.'/'.KB_SITE.'/'.md5($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']).'.cache'; 
    162162    $timestamp = ((@file_exists($cachefile))) ? @filemtime($cachefile) : 0; 
    163163 
     
    175175if ($settingsPage) 
    176176{ 
    177     include ('mods/'.substr($page, 9, strlen($page)-9).'/settings.php'); 
     177    if (!Session::isAdmin()) 
     178    { 
     179        header('Location: ?a=login'); 
     180        echo '<a href="?a=login">Login</a>'; 
     181        exit; 
     182    } 
     183 
     184    include('mods/'.substr($page, 9, strlen($page)-9).'/settings.php'); 
    178185} 
    179186elseif ($modOverrides) 
  • dev/common/portrait_grab.php

    r190 r192  
    2323    else 
    2424    { 
    25         $now = date("Y-m-d H:m:s"); 
     25        $now = date('Y-m-d H:m:s'); 
    2626 
    2727        $alliance = new Alliance(); 
     
    3131        $pilot = new Pilot(); 
    3232        $plt_id = $pilot->add($_SERVER['HTTP_EVE_CHARNAME'], $corp, $now); 
    33         $pilot->setCharacterID($_SERVER['HTTP_EVE_CHARID']); 
    34         @unlink("cache/portraits/".$_SERVER['HTTP_EVE_CHARID']."_32.jpg"); 
    35         @unlink("cache/portraits/".$_SERVER['HTTP_EVE_CHARID']."_64.jpg"); 
    36         @unlink("cache/portraits/".$_SERVER['HTTP_EVE_CHARID']."_128.jpg"); 
    37         @unlink("cache/portraits/".$_SERVER['HTTP_EVE_CHARID']."_256.jpg"); 
    38         @unlink("cache/portraits/".$_SERVER['HTTP_EVE_CHARID']."_512.jpg"); 
     33        $id = intval($_SERVER['HTTP_EVE_CHARID']); 
     34        $pilot->setCharacterID($id); 
     35        @unlink("cache/portraits/".$id."_32.jpg"); 
     36        @unlink("cache/portraits/".$id."_64.jpg"); 
     37        @unlink("cache/portraits/".$id."_128.jpg"); 
     38        @unlink("cache/portraits/".$id."_256.jpg"); 
     39        @unlink("cache/portraits/".$id."_512.jpg"); 
    3940        $html .= "<img src=\"".$pilot->getPortraitURL(64).".jpg\" border=\"0\">"; 
    4041        $html .= "Character portrait updated !<br>"; 
    4142        $html .= "<a href=\"?a=igb\">Return</a><br>"; 
    42  
    43         //$updated = true; 
    4443    } 
    4544} 
     
    4948$page->setContent($html); 
    5049$page->generate(); 
    51  
    52 /* 
    53 if ($updated) 
    54 { 
    55     flush(); 
    56     ignore_user_abort(1); 
    57     $id = $_SERVER['HTTP_EVE_CHARID']; 
    58  
    59     $img = imagecreatefromjpeg("http://img.eve.is/serv.asp?s=512&c=".$id); 
    60     if ($img) 
    61     { 
    62         $newimg = imagecreatetruecolor(32, 32); 
    63         imagecopyresampled($newimg, $img, 0, 0, 0, 0, 32, 32, 512, 512); 
    64         imagejpeg($newimg, "cache/portraits/" . $id . "_32.jpg"); 
    65         $newimg = imagecreatetruecolor(64, 64); 
    66         imagecopyresampled($newimg, $img, 0, 0, 0, 0, 64, 64, 512, 512); 
    67         imagejpeg($newimg, "cache/portraits/" . $id . "_64.jpg"); 
    68         $newimg = imagecreatetruecolor(128, 128); 
    69         imagecopyresampled($newimg, $img, 0, 0, 0, 0, 128, 128, 512, 512); 
    70         imagejpeg($newimg, "cache/portraits/" . $id . "_128.jpg"); 
    71     } 
    72 } 
    73 */ 
    7450?> 
  • dev/mods/signature_generator/sig.php

    r190 r192  
    1919} 
    2020 
    21 if (!$plt_id = $_GET['i']) 
     21if (!$plt_id = intval($_GET['i'])) 
    2222{ 
    2323    errorPic('No pilot id specified.');