Beiträge von Peter

    Datei zum Schließen:

    PHP
    require("./global.php");
    $db->unbuffered_query("UPDATE bb".$n."_options SET value='1' WHERE varname='offline'");
    $db->unbuffered_query("UPDATE bb".$n."_options SET value='OFFLINETEXT' WHERE varname='offlinemessage'");
    
    
    $option = new options("lib");
    $option->write();


    Datei zum Öffnen:

    PHP
    require("./global.php");
    $db->unbuffered_query("UPDATE bb".$n."_options SET value='0' WHERE varname='offline'");
    $db->unbuffered_query("UPDATE bb".$n."_options SET value='' WHERE varname='offlinemessage'");
    
    
    $option = new options("lib");
    $option->write();

    Über den Kundenbereich wäre es möglich Passwörter bzw. die Kundendatenbank auszulesen. Durch eine geschickte SQL-Injektion ist dies möglich. Folgender Bugfix behebt diese Sicherheitslücken!


    suchen Sie in der customer.php nach folgender Codestelle:

    und ersetzen Sie diese mit folgender



    suchen Sie weiters folgende Codestelle (2 mal!):

    Code
    $row = $db->query_first("SELECT password FROM bb".$n."_customer WHERE customerid = '".$_POST[customerid]."' AND password = '".$password."'");

    und ersetzen Sie diesen mit folgenden:

    Code
    $row = $db->query_first("SELECT password FROM bb".$n."_customer WHERE customerid = '".intval($_POST['customerid'])."' AND password = '".$password."'");    /* Bugfix 17/09/2006 | possible SQL-Injection */



    suchen sie weiters folgende Codestelle:

    Code
    if($_POST[send] == "submitorder") {
    
    
        $row = $db->query_first("SELECT * FROM bb".$n."_customer_products WHERE id = '".$_POST[productid]."'");
    
    
        $db->query("INSERT INTO bb".$n."_customer_rechnungen (customerid, email, productid, preis, status, time, make_update, installservice, firstname, name, address, zipcode, city, country, company, multilicense, paypal, userid)
         VALUES ('".$_POST[customerid]."','".$_POST[email]."','".$_POST[productid]."','".$_POST[preis]."',0,'".time()."','".$_POST[update]."','".$_POST[install]."','".$_POST[firstname]."','".$_POST[fname]."','".$_POST[address]."','".$_POST[zipcode]."','".$_POST[city]."','".$_POST[country]."','".$_POST[company]."','".$row['multilicense']."','".$_POST['payment']."','".$wbbuserdata['userid']."')");

    und ersetzen Sie diese mit folgender:

    Code
    $row = $db->query_first("SELECT * FROM bb".$n."_customer_products WHERE id = '".intval($_POST['productid'])."'");
    
    
        $db->query("INSERT INTO bb".$n."_customer_rechnungen (customerid, email, productid, preis, status, time, make_update, installservice, firstname, name, address, zipcode, city, country, company, multilicense, paypal, userid)
         VALUES ('".intval($_POST['customerid'])."','".addslashes($_POST['email'])."','".intval($_POST['productid'])."','".intval($_POST['preis'])."',0,'".time()."','".intval($_POST['update'])."','".intval($_POST['install'])."','".addslashes($_POST['firstname'])."','".addslashes($_POST['fname'])."','".addslashes($_POST['address'])."','".addslashes($_POST['zipcode'])."','".addslashes($_POST['city'])."','".addslashes($_POST['country'])."','".addslashes($_POST['company'])."','".addslashes($row['multilicense'])."','".addslashes($_POST['payment'])."','".$wbbuserdata['userid']."')");



    suchen Sie weiters nach folgender Codestelle:

    Code
    $row = $db->query_first("SELECT * FROM bb".$n."_customer_products WHERE id = '".$id."'");

    und ersetzen Sie diese mit folgender:

    Code
    $row = $db->query_first("SELECT * FROM bb".$n."_customer_products WHERE id = '".intval($id)."'"); /* Bugfix 17/09/2006 | possible SQL-Injection */


    suchen Sie weiters nach folgender Codestelle:

    Code
    $row = $db->query_first("SELECT * FROM bb".$n."_customer_products WHERE id = '".$id."'");

    und ersetzen Sie diese mit folgender:

    Code
    $row = $db->query_first("SELECT * FROM bb".$n."_customer_products WHERE id = '".intval($id)."'"); /* Bugfix 17/09/2006 | possible SQL-Injection */


    suchen Sie weiters nach folgender Codestelle:

    Code
    $filedata = $db->query_first("SELECT * FROM bb".$n."_customer_versions WHERE id = '".$id."'");

    und ersetze Sie diese mit folgender:

    Code
    $filedata = $db->query_first("SELECT * FROM bb".$n."_customer_versions WHERE id = '".intval($id)."'"); /* Bugfix 17/09/2006 | possible SQL-Injection */








    Suchen Sie in der Datei products.php nach folgender Codestelle

    Code
    if(isset($_GET['id']))  $id = $_GET['id'];

    und ersetzen Sie diese mit folgender:

    Code
    if(isset($_REQUEST['id']))  $id = intval($_REQUEST['id']); /* Bugfix 17/09/2006 | possible SQL-Injection */

    Du kannst ja Variablen per $_GET übertragen. z.b.: addreply.php?threadid=704. Mit register_global wird automatisch die $threadid erstellt und mit dem Inhalt 704 gefüllt. Unter register_global = off musst du das selber machen.


    z.B.:

    PHP
    if(isset($_GET['threadid'])) $threadid = $_GET['threadid'];
      else $threadid = 0;


    Bei diesem Beispiel wäre es sinnvoll nur Integer Werte (Zahlen) zuzulassen. Also z.B.:

    PHP
    if(isset($_GET['threadid'])) $threadid = intval($_GET['threadid']);
      else $threadid = 0;

    Ein Backup über mehr als 8 MB des Arbeitsspeichers ist per SecuritySystem basic zur Zeit nicht möglich. Dies wird aber wahrscheinlich in der kommenden Version - wie auch schon in der professional und permium Version vorhanden - möglich sein.

    beheben können wir dieses Problem nicht, da wir keinen Zugriff auf den Server haben. Schriebe einen Hoster an und sag ihm, dass er solll PHP mit der GD-Bibliothek zur Grafikbearbeitung kompilieren.



    Quelle: http://www.php.net/manual/de/ref.image.php

    Du musst aber folgendes bedenken: Wer benutzt im wbb2 den Standardstyle? Fast niemand. Daher finde ich diese Diskussionen eigentlich sinnlos. Viel wichtiger ist, was man aus dem wbb3 programmiertechnisch alles herrausholen kann. Wenige Wochen nach dem Release der wbb3 beta werden viele Designs von mygen o.ä kommen. Der Standardstyle ist nur ein Featue, was am Anfang benötigt wird und als solches sollte es auch gesehen werden.