Seite 1 von 1

Sicherheit von curl_init()

Verfasst: Fr 18.Sep, 2009 12:50
von Dungeonwatcher
Hi! :cool:

Eine Frage zur Sicherheit der Funktion curl_init().

Der Eine oder Andere kennt sicherlich das Browsergame MyMiniCity. Dafür habe ich ein fertiges PHP Script, welches automatisch die richtige Funktion für Verkehr, Sicherheit etc. aufruft, umgeschrieben. Umgeschrieben deswegen, weil ich auf meinem Server so ziemlich alles an Funktionen verboten habe, was das nachladen fremder Scripts ermöglicht. Das fertige Script sieht aktuell so aus:

Code: Alles auswählen

<?php
// standard hack prevent
define('IN_PHPBB', true);
$phpbb_root_path = './';

// Aufruf: 
// für das Bild: meinestadt.php 
// für die Weiterleitung: meinestadt.php?action=link

// ------ Ab hier anpassen -----

// Hier Stadtnamen eintragen
$stadtname = "dungeon-bbs";

// ggf. anpassen, sollte aber funktionieren, wenn das Bildunterverzeichnis /mmc im selben Verzeichnis wie das Script liegt.
$bildverzeichnis = $_SERVER["SERVER_NAME"] . dirname($_SERVER["PHP_SELF"]). "/mmc";

// ------ Ende anpassen --------

//Daten einlesen und unsinnige Eingaben (versuchte Injektionen) an Google weiterleiten
$schalter = $_GET['action'];
if ($schalter != "link" and $schalter !="") header("Location: " . "http://www.google.de/search?q=".$schalter);

// Inhalt von MMC abholen und in ein Objekt einlesen

//$xml = simplexml_load_file("http://dungeon-bbs.myminicity.com/xml");

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://".$stadtname.".myminicity.com/xml");
curl_setopt($ch, CURLOPT_HEADER, 0);
// damit der String in die Variable geht, anstatt in die Browserausgabe
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_inhalt = curl_exec($ch);
curl_close($ch);

$xml = simplexml_load_string($xml_inhalt); 

$parturl = "";
// Objekt abarbeiten und die "Fehlstelle" finden
if($xml->transport < 100)
        $parturl = "/tra";
elseif($xml->pollution > 0)
        $parturl = "/env";
elseif($xml->unemployment > 0)
        $parturl = "/ind";
elseif($xml->criminality > 0)
        $parturl = "/sec";

// Sonderfall: Alles OK
else { 
	if ($schalter == "") 
		$parturl = "/pop";
	else 
		$parturl = "";
	}

// Ausgabe je nach Schalter
switch ($schalter) {
	case 'link': header("Location: " . "http://" . $stadtname . ".myminicity.com" . $parturl);
	break;
	case '': header("Location: " . "http://" . $bildverzeichnis . $parturl . ".gif");
	break;
	default: die("Missing in action!");
	}
?>
Ersetzt habe ich nun die Zeile 26:

Code: Alles auswählen

$xml = simplexml_load_file("http://dungeon-bbs.myminicity.com/xml");
durch:

Code: Alles auswählen

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://".$stadtname.".myminicity.com/xml");
curl_setopt($ch, CURLOPT_HEADER, 0);
// damit der String in die Variable geht, anstatt in die Browserausgabe
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_inhalt = curl_exec($ch);
curl_close($ch);

$xml = simplexml_load_string($xml_inhalt);
Reisse ich mir dadurch nun ein Loch in's System?

Bye

Verfasst: Fr 18.Sep, 2009 13:42
von oxpus
Hm, so gesehen zunächst nicht.
Dabei kenne ich allerdings die Funtion curl_setopt nicht, die etwas auslöst, was ich so ja nicht sehe...

Verfasst: Fr 18.Sep, 2009 13:53
von Dungeonwatcher
Hi! :cool:

[quote="oxpus";p="88658"]Hm, so gesehen zunächst nicht.[/quote]

Da bin ich schonmal etwas beruhigt. :p
Dabei kenne ich allerdings die Funtion curl_setopt nicht, die etwas auslöst, was ich so ja nicht sehe...
Lt. PHP Handbuch curl_setopt:
Die Funktion curl_setopt() setzt Optionen für eine cURL-Session, die durch den ch Parameter identifiziert ist. Der option Parameter stellt die Option dar, die mit dem Wert des Parameters value besetzt werden soll.

Verfasst: Fr 18.Sep, 2009 14:08
von oxpus
Ach "CURL"!
Jetzt ja...

Ja, kein Thema. Kann so bleiben.

Verfasst: Fr 18.Sep, 2009 14:18
von Dungeonwatcher
Hi! :cool:

THNX großer Meister. :)

Bye