我想知道在页面上使用包含是否安全。
我使用allow_url_include读取是不安全的,我之前使用的是绝对路径,但解决了我可以绕过相对路径的问题,但这真的很安全吗?
这样的事情真的有效吗?
<?php
$header= preg_replace('/[^a-zA-Z0-9_]/', '', $_GET['header']);
include "http://mysite.co.uk/directory/$header.php";
?>
答案 0 :(得分:1)
这是一个例子,说明了我在上面评论中提出的概念。
$headers = array('loggedin.php','loggedout.php','someotherheader.php', 'etc.php');
$key = (int) $_GET['header']; // We know it must be a integer so cast to int
$header = $headers[$key];
include "http://mysite.co.uk/directory/$header";
这可以通过验证数组中存在的密钥以及它是否默认为默认标头来改进。您也不应该通过URL包含文件。您应该使用磁盘上文件的路径。它快得多。