richtige einstellung von: allow_url_fopen, allow_url_fopen usw.
Paul
- php
Ich kann in meiner Verlwatlung folgende PHP Einstellungen ausüben.
Doch ich weis nicht so recht was ich erlauben soll, und was nicht, bzw. was die Nachteile sind
register_globals
allow_url_fopen
allow_url_include
magic_quotes_gpc
expose_php
Paul
Tach!
Doch ich weis nicht so recht was ich erlauben soll, und was nicht, bzw. was die Nachteile sind
register_globals
Ein nahezu ausgestorbenes Feature. Bringt bei schlechter Programmierung mehr Ärger als nutzen.
allow_url_fopen
Braucht dein Code sowas wie file_get_contents('http://example.com/dokument');? Vermutlich gelegentlich. Das kann man angeschaltet lassen.
allow_url_include
Inkludierst du Code über URLs statt nur lokale Dateien? Meist macht man das aus guten Gründen nicht und will es auch keinem Script erlauben.
magic_quotes_gpc
Auch das ist ein aussterbendes Feature. Bringt auch mehr Kopfweh als Sicherheit. Es gibt ein eigenen Kapitel im PHP-Handbuch zu den Magic Quotes.
expose_php
Ob da nun in den HTTP-Response-Headern drinsteht, das PHP und in welcher Version auf dem Server läuft oder nicht, ist eigentlich für niemanden relevant. Außer für diejenigen, die irgendwelche Sicherheitslücken ausnutzen wollen. Aber wenn die da sind, geht das auch ohne dass der Server ein laufendes PHP offenbart.
dedlfix.
allow_url_fopen
Braucht dein Code sowas wie file_get_contents('http://example.com/dokument');? Vermutlich gelegentlich. Das kann man angeschaltet lassen.
Aber bitte nicht aktiv verwenden sondern auf das wesentlich flexiblere und leistungsfähigere cURL sezten:
Das file_get_contents() kann man z.B. durch diesen Schnipsel hier ersetzen:
<?php
$handle = curl_init();
curl_setopt_array(
$handle,
array(
CURLOPT_URL => 'http://example.com/dokument',
CURLOPT_HEADER => false,
CURLOPT_RETURNTRANSFER => true,
)
);
$foo = curl_exec($handle);
curl_close($handle);
?>
Ist zwar etwas weniger bequem, durch die optionen aber deutlich einfacher konfigurierbar - besonders wenns komplizierter wird (Zugriffsschutz, andere Request-Methode, Cookies, ein Proxy usw ).
Tach!
allow_url_fopen
Braucht dein Code sowas wie file_get_contents('http://example.com/dokument');? Vermutlich gelegentlich. Das kann man angeschaltet lassen.Aber bitte nicht aktiv verwenden sondern auf das wesentlich flexiblere und leistungsfähigere cURL sezten:
Kurz gesagt: Wer's braucht ...
Das file_get_contents() kann man z.B. durch diesen Schnipsel hier ersetzen:
Warum einfach, wenn es umständlich auch geht?
Ist zwar etwas weniger bequem, durch die optionen aber deutlich einfacher konfigurierbar - besonders wenns komplizierter wird (Zugriffsschutz, andere Request-Methode, Cookies, ein Proxy usw ).
Wenn ich den ganzen Schnickschnack nicht brauche, dann ist CURL übertrieben. Wer es doch braucht, der kann auch einen Stream-Kontext nehmen. Beispiel aus dem PHP-Handbuch:
<?php
// Create a stream
$opts = array(
'http' => array(
'method' => "GET",
'header' => "Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
Das method kann man hier weglassen, GET ist sowieso der Defaultwert.
dedlfix.
Hallo!
allow_url_fopen
Braucht dein Code sowas wie file_get_contents('http://example.com/dokument');? Vermutlich gelegentlich. Das kann man angeschaltet lassen.Aber bitte nicht aktiv verwenden sondern auf das wesentlich flexiblere und leistungsfähigere cURL sezten:
Kurz gesagt: Wer's braucht ...
Warum einfach, wenn es umständlich auch geht?
Wenn ich den ganzen Schnickschnack nicht brauche, dann ist CURL übertrieben. Wer es doch braucht, der kann auch einen Stream-Kontext nehmen. Beispiel aus dem PHP-Handbuch:
Der Vollständigkeit halber geht das alles natürlich auch noch schöner mit fsockopen. Das braucht dann auch kein allow_url_fopen mehr (wenn ich mich gerade nicht irre).
Grüße, Matze
Tach!
Der Vollständigkeit halber geht das alles natürlich auch noch schöner mit fsockopen. Das braucht dann auch kein allow_url_fopen mehr (wenn ich mich gerade nicht irre).
Ja, aber dann hast du dich vollständig selbst um alle Feinheiten des Protokolls zu kümmern. Das mag bei HTTP 1.0 noch gehen, aber bei 1.1 kommen dann schon solche Dinge wie Chunked Encoding hinzu. Das ist nicht unlösbar, aber etwas nervig. Man will sich nicht mehr als notwendig selbst mit diesen unteren Schichten des Protokoll-Stacks befassen müssen.
dedlfix.
Hallo!
_Der Vollständigkeit halber_
;)
Sicher ist der Einsatz nicht so einfach wie mit anderen genannten Beispielen, er bietet aber auch andere Möglichkeiten.
Grüße, Matze