解析PHP CMS的最安全的方法?

时间:2014-01-11 00:03:56

标签: php security content-management-system

作为一项练习,我正在推动自己的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文件。

1 个答案:

答案 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";
}