我正在使用mod_rewrite构建一个站点,这样它就有了如下的树:
+---css
| '---bootplus-responsive.min.css
| '---bootplus.min.css
| '---extra.css
+---views
| '---autolike.php
| '---controlpanel.php
| '---footer.php
| '---header.php
| '---home.php
'---app.php
'---controller.php
'---model.php
'---router.php
'---.htaccess
每个页面都与/control面板放在一起,该面板由header.php、controlpanel.php和footer.php等组成。
Router.php
$this->routes = array(
"home" => "indexPage",
"controlpanel" => "controlPanel",
"autolike" => "autoLike",
"about" => "about",
"logout" => "logout"
);
Controller.php
private function loadView($view){
require("views/" . $view . ".php");
}
private function loadPage($view){
$this->loadView("header");
$this->loadView($view);
$this->loadView("footer");
}
//--- Page Functions
private function indexPage(){
$this->loadPage("home");
}
private function controlPanel(){
$this->loadPage("controlpanel");
}
private function autoLike(){
$this->loadPage("autolike");
}
private function about(){
$this->loadPage("about");
}
app.php
require("controller.php);
$app = new Controller();
它的工作原理是,页面实际上显示在app.php上?page=[page],然后mod_rewrite将其缩短为/[page]/etc,我希望到目前为止你能理解!
在controlpanel.php上,有一个表单在页面加载时填充了数据库中的信息,然后有一个提交按钮来更新数据。我想不出一种安全更新数据的方法,因为如果我(例如)创建update.php,然后用GET发送数据,任何人都可以访问update.php?username=[不是他们的用户名]&电子邮件=[一些电子邮件]等,并更改其他人的记录。POST似乎也不适用于mod_rewrite。有人能给我什么建议吗?
TL;DR:启用mod_rewrite时,如何安全地将信息从表单发送到数据库?
- GET和POST在这里并不重要,两者都不能保护任何东西
- GET与POST只是语义上的区别,对客户端有某些不同的行为规范,它不是一种安全措施
- mod_rewrite可以很好地处理POST请求
- 所有mod_rewrite都是为了拦截和修改响应URL而执行的物理文件,没有更多,也没有更少
您需要的是身份验证和权限系统。要求用户登录。建立用户可以和不能执行或访问的权限检查每个请求是否允许用户执行他将要执行的操作。如果他发布到update.php?username=foobar
,则检查是否允许他更改有关用户名foobar
的任何内容,如果他不允许,则拒绝该请求。