2012-04-11 8 views
1

Ich habe einfache Frage. Der Benutzer liefert eine URL zu meinem PHP-Skript, wo ich die Seite von der URL abrufe und parse und dem Benutzer ein Snippet zeige. Jetzt möchte ich die URL bereinigen oder besser umgehen, so dass es für mich sicher ist, sie mit file_get_contents() abzurufen.Wie kann die URL aus Benutzereingaben sicher entfernt werden, um in file_get_contents verwendet zu werden?

Mein vereinfachten Code sieht wie folgt aus:

$url = $_POST['url']; 
$html = file_get_contents($url); 

Das erste, was, was mir in den Sinn kam, ist Regex zu verwenden, um das Böse URL fangen, aber ich glaube es nicht leistungsfähig ist und besser die ganze zu entkommen wäre URL Aber welche PHP-Funktion kann ich verwenden, um die URL für die Funktion file_get_contents() zu umgehen?

+3

"Escaping" ist hier nutzlos. Sie suchen nach * Validierung *. – deceze

Antwort

2

Sie könnten einfach die URL zum Starten mit http:// oder https:// benötigen.

Glücklicherweise ist PHP schlau genug, Umleitungen zu einer file:// URL nicht zu folgen.
Allerdings tut folgen Umleitungen zu ftp:// URLs, so dass Sie besser sicherstellen, dass Ihr Server nicht auf interne FTP-Server ohne Authentifizierung zugreifen kann.

+2

Diese letzte Aussage sollte besser getestet werden ... :) – deceze

+0

@ThiefMaster Könnten Sie bitte einige Referenzlinks für Ihre Antwort angeben (z. B. PHP nicht nach 'file: //'), bitte? – Frodik

+1

@Frodik: Ich habe es getestet. – ThiefMaster