我正在制作一个小网站
而不是拥有一个header.php和一个带有neccesarry信息的footer.php(函数,dbconnection,html head),并且我希望在index.php中包含所有内容。但后来我必须将页面添加到白名单和所有这些。我只是想把它放在页面/然后用index.php访问它?page = test
如何在不制作大白名单的情况下包含网页?如何使用preg_match和checcking该页面变量只包含a-z。没有邪恶的点。如果它只包含字母a-z>包括? 或者可以使用glob和scan pages /,将它们添加到数组中,这样我就不必每次都编辑index.php
请告诉我你的想法和想法
<html>
<head>
<title>SindACC</title>
</head>
<body>
<?php include($page) ?>
</body>
</html>
答案 0 :(得分:1)
只需将所有页面放在一个文件夹中(例如“/ pages”)。然后在执行包含之前,检查页面文件夹中是否存在该文件。
答案 1 :(得分:1)
我肯定会进行正则表达式检查,或者甚至只进行平坦化(例如,删除任何不是字母数字的东西)然后你可以进行file_exists()检查,如果成功,那么包括
答案 2 :(得分:1)
如果您不想使用白名单,请在$page
变量上使用basename
以消除任何父目录利用,然后将该文件包含在pages/
目录中。只要你不放置那个不应该在该目录中看到的文件,你就可以了。
答案 3 :(得分:0)
拥有页面目录,清除页面路径中的无效字符,并且只包含pages目录中的文件。我认为你有正确的想法。
答案 4 :(得分:0)
像其他人说的那样,确保你对变量进行消毒。这是一种可行的方法,但是你可以用20种方法来做到这一点:
function sanitizeAlpha($string)
{
if (preg_match_all('/([A-Z]|[a-z]/', $string, $matches) > 0)
{
return implode($matches[0]);
} else {
die('Invalid Page Name');
}
}