Sicherheit von curl_init()

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Sicherheit von curl_init()

Beitrag 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
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag 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...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Beitrag 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.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ach "CURL"!
Jetzt ja...

Ja, kein Thema. Kann so bleiben.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Dungeonwatcher
Beiträge: 1055
Registriert: Sa 19.Feb, 2005 01:16
Wohnort: Berlin
Kontaktdaten:

Beitrag von Dungeonwatcher »

Hi! :cool:

THNX großer Meister. :)

Bye
Antworten