Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 5
Seite [1]
Crowe2Extreme


Beginner




Beiträge: 1
# Thema - 04.04.2010 um 09:59 Uhr
Ich habe mir mal gedanken zur Sicherheit von Clansphere gemacht. Dabei bin ich alle Dateien durchgegangen.

Es erscheint mir für sinnvoll, alle Variablen die vom Client kommen zu überprüfen ob diese die Datenbank beschädigen können. Deshalb habe ich die funktion cs_sql_connect umgeschrieben, sodass direkt nach dem Verbinden zur Datenbank alle Variablen überprüft werden.

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
1. / 2. / ... 
 
function cs_sql_connect($cs_db$test 0)
{
  
$error '';
  if(!
extension_loaded('mysql')) {
    
$error 'PHP extension mysql must be activated!';
  }
  else {
    
$connect = @mysql_connect($cs_db['place'], $cs_db['user'], $cs_db['pwd']) OR $error mysql_error();
  }
  if(empty(
$error)) {
    
mysql_select_db($cs_db['name']) OR $error mysql_error($connect);
  }

  global 
$cs_main;
  if(empty(
$error) AND $cs_main['charset'] == 'UTF-8') {
    
# since php 5.2.3 - depends on mysql libs, too
    
if(function_exists('mysql_set_charset'))
      
mysql_set_charset('utf8'$connect);
    else
      
mysql_unbuffered_query("SET NAMES 'utf8'"$connect) OR $error mysql_error();
  }

// Change by Crowe2Extreme START
  
  
if (isset($_POST)) {
    foreach (
$_POST as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };
  if (isset(
$_GET)) {
    foreach (
$_GET as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };
  if (isset(
$_COOKIE)) {
    foreach (
$_COOKIE as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };
  if (isset(
$_FILE)) {
    foreach (
$_FILE as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };
  if (isset(
$_REQUEST)) {
    foreach (
$_REQUEST as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };

// Change by Crowe2Extreme END
  
  
if(empty($test) AND empty($error))
    return 
$connect;
  elseif(empty(
$test))
    
cs_error_sql(__FILE__'cs_sql_connect'$error1);
  else
    return 
$error;
}


Selbes für die mysqli.php

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
1. / 2. / ... 
 
function cs_sql_connect($cs_db$test 0)
{
  
$error '';
  if(!
extension_loaded('mysqli')) {
    
$error 'PHP extension mysqli must be activated!';
  }
  else {
    
$connect = @mysqli_connect($cs_db['place'], $cs_db['user'], $cs_db['pwd'], $cs_db['name']) OR $error mysqli_connect_error();
  }

  global 
$cs_main;
  if(empty(
$error) AND $cs_main['charset'] == 'UTF-8') {
    
# since php 5.0.5 - depends on mysql libs, too
    
if(function_exists('mysqli_set_charset'))
      
mysqli_set_charset($connect'utf8');
    else
      
mysqli_query($connect"SET NAMES 'utf8'") OR $error mysqli_error($connect);
  }
  
    if (isset(
$_POST)) {
    foreach (
$_POST as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };
  if (isset(
$_GET)) {
    foreach (
$_GET as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };
  if (isset(
$_COOKIE)) {
    foreach (
$_COOKIE as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };
  if (isset(
$_FILE)) {
    foreach (
$_FILE as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };
  if (isset(
$_REQUEST)) {
    foreach (
$_REQUEST as &$value) {
      
$value mysql_real_escape_string($value);
    }
  };

  if(empty(
$test) AND empty($error))
    return 
$connect;
  elseif(empty(
$test))
    
cs_error_sql(__FILE__'cs_sql_connect'$error1);
  else
    return 
$error;
}


Ich bitte das ClanSphere Team meinen Vorschlag zu Prüfen und die Änderungen in den nächsten Patch einzubauen.

Mit freundlichem Gruss

Crowe2Ex


Zuletzt editiert von Crowe2Extreme am 04.04.2010 um 10:06 Uhr (2x Editiert)
Inaktiv
Spongebob


King for a day




Herkunft: Kassel
Beiträge: 277
# Antwort: 1 - 04.04.2010 um 10:07 Uhr
macht das nicht bei cs_sql_insert und cs_sql_update mehr sinn? Weil sowas muss doch erst abgesichert werden wenn etwas in die datenbank geschrieben wird oder, nicht?


------------------
ClanSphere developer - since 2010
we know how to party! - since 2004: www.sternex.de
plentySystems developer - since 2010: www.plentysystems.de

Inaktiv
|
Crowe2Extreme
Thread-Ersteller


Beginner




Beiträge: 1
# Antwort: 2 - 04.04.2010 um 10:22 Uhr

Das ist richtig. Aber stell dir mal vor du installierst ein Modul von einem unerfahreren Scripter der daran nicht gedacht hat.


Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 3 - 04.04.2010 um 10:34 Uhr
bin unterwegs, deshalb kurzantwort:

hi @ magic quotes


Inaktiv
|
hajo ClanSphere Team


VIP - Poster




Herkunft: Barsbüttel
Beiträge: 9411
# Antwort: 4 - 05.04.2010 um 01:20 Uhr
grundsätzlich sollte man keinem benutzer-input trauen, diesem globalisiert zu misstrauen ist allerdings auch kein guter weg. entsprechend sollte man alle stellen, an denen benutzer-input und sql-queries kontakt miteinander haben, absichern, wie es derzeit auch der fall ist. unerfahrene modul-programmierer können im aktuellen system sicherlich fehler machen, allerdings wird beinahe alles schon automatisiert escaped.

das aktuelle system wird so beibehalten, wenn jemandem kleinere verbesserungen einfallen setzen wir diese sehr gern um. stützradprogrammierung hat nicht und wird keinen einzug in clansphere erhalten wie z.b. bei webspell und co


------------------
ClanSphere - professional clan care starts here

Offline
|
Mindcrime


Geekboy





Beiträge: 1155
# Antwort: 5 - 05.04.2010 um 15:25 Uhr
Kurze antwort:
Sehe antwort duriel, ist dasselbe wie magic quotes standard auf 'an' und das ist wohl einer der schlechtesten ideen die die PHP entwickler ueberhaupt mal gemacht haben...


Inaktiv
|
Antworten: 5
Seite [1]


Sie müssen sich registrieren, um zu antworten.