作为一项练习,我正在推动自己的CMS以更好地学习PHP。目前,我将.htaccess文件设置为将所有URL重定向到index.php页面。
// .htaccess file
RewriteEngine on
RewriteRule !\.(js|gif|jpg|png|css)$ index.php
一旦我进入index.php页面,我将需要根据请求的URL确定用户应该看到的内容。例如,如果用户访问了mysite.com/about
,那么我将包含about.php
的文件内容。
我的问题是:解析文件值的这个URL最安全的方法是什么?我想避免用户编写恶意URL,除其他外,这些URL可以访问我不想显示的私有php文件。
答案 0 :(得分:1)
你的htaccess与安全性无关。我建议你使用这样的开关盒:
$site = "home";
switch(strtolower($_SERVER['REQUEST_URI'])){
case "about":
$site = "about";
break;
case "contact":
$site = "contact";
break;
}
include "{$site}.php";
或者这个:
$site = "home";
$page = strtolower($_SERVER['REQUEST_URI']);
switch($page){
case "about":
case "contact":
$site = $page;
break;
}
include "{$site}.php";
或者不必制作允许页面列表
$path = "pages/";
$page = trim(strtolower($_SERVER['REQUEST_URI']),"/");
$slashPos = strpos($page, "/");
if($slashPos!==false){
$page = substr($page, 0, $slashPos);
}
$page = preg_replace("/[^a-z0-9-]/", "", $page);
if(file_exists("{$path}{$page}.php")){
include "{$path}{$page}.php";
}else{
//include "{$path}home.php";
}