ali*_*iov 5 php security function
我正在编写2003年编写的一本较旧的php mysql书.作者使用include()函数通过包含header.inc,footer.inc,main.inc文件等来构造html页面.现在我发现这不是在我从服务器收到很多警告后,允许在默认的ini设置中(allow_url_include设置为Off).
我还注意到你可以使用包含括号的include.我试过这个并且它可以工作,我没有收到任何错误消息或警告.两者有什么不同?也就是说,include()与include不同?
使用 include() 可能会引入本地文件包含 (LFI) 或远程文件包含 (RFI) 漏洞。您应该尝试避免使用 include,例如,如果您要包含 HTML,那么编写print(file_get_contents($file))
比include($file)
. 然而include()
,在大多数 PHP 应用程序中,为了减少代码重复,需要对 PHP 文件进行处理。
即使远程文件包含被禁用,它仍然可以使用高级 LFI 攻击来利用系统。
如果您确实需要接受 中的用户输入include()
,那么您应该确保它位于白名单中:
$good_includes=array("contact","home","view");
if(in_array($_GET[page],$good_includes)){
include("inc/".$_GET[page].".php");
}
Run Code Online (Sandbox Code Playgroud)