ssl外部内容php codeigniter

时间:2013-06-12 22:08:17

标签: php codeigniter ssl https proxy

我正在开发一个完全落后于SSL的网站。会员可以发布包含文本,youtube vids,soundcloud声音和外部图像的配置文件。我有一个过滤器来删除所有iframe,js等,并格式化youtube和soundcloud播放器以使用https。我不确定如何处理通常托管在非ssl域上的图像。我的第一个想法是创建一个代理系统来获取图像并通过本地ssl提供它。然而,我一起敲打测试的系统不起作用!

基本上所有外部网址都会像../external/?url=http://www.somedomain.com一样进行过滤。这包括外部图像URL。然后他们被传递给了这个;

public function index() {
    $url = $this->input->get('url', TRUE);

    $data = FALSE;
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

    $data = curl_exec($ch);
    $type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
    $responce = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    $sub_type = explode('/', $type); // so we return just image instead of e.g. image/jpg
    if ($type == 'text/html') {
        redirect($url);
    } else if ($sub_type[0] == 'image') {
        header('Content-type: ' . $type);
        echo $data;
    }
}

这不是安全地提供外部图像,所以我需要什么?这也是最好的方法吗?我不想从我的服务器下载和提供所有外部图像。

最终目标是使此功能检查内容是否存在(而不是404),并可能探测外部文件以尝试确保它不是恶意的。现在虽然我只是希望它通过ssl提供文件,除非这是一个非常糟糕的主意。

0 个答案:

没有答案