如何安全地从用户输入中转义URL以在file_get_contents中使用?

时间:2012-04-11 08:09:48

标签: php url escaping file-get-contents sanitize

我有一个简单的问题。用户提供我的PHP脚本的URL,我从URL获取页面并解析它并向用户显示一些片段。现在我想要清理或更好地转义URL,这样我就可以使用file_get_contents()来获取它。

我的简化代码如下所示:

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

首先我想到的是使用正则表达式来捕获邪恶的URL,但我认为它不是有效的,更好的是逃避整个URL。但是我可以使用什么PHP函数来转义用于file_get_contents()函数的URL?

2 个答案:

答案 0 :(得分:2)

您可以简单地要求网址以http://https://开头。

幸运的是,PHP非常聪明,不会将重定向关注到file://网址 但是,确实会重定向到ftp://网址,因此您最好确保您的服务器无法在未经身份验证的情况下访问任何内部ftp服务器。

答案 1 :(得分:0)

如果你想做正则表达式,请看一下:

Stackoverflow:What is the best regular expression to check if a string is a valid URL?