0

我正在使用 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

每个页面都与 /controlpanel 放在一起,包括 header.php,然后是 controlpanel.php,最后是 footer.php 等。

路由器.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");
}

应用程序.php

require("controller.php);
$app = new Controller();

它的工作原理是页面实际显示在 app.php?page=[page] 然后 mod_rewrite 将其缩短为 /[page]/ 等,我希望你到目前为止理解!

在 controlpanel.php 上有一个表单,它在页面加载时使用来自数据库的信息填充,然后有一个提交按钮来更新数据。我想不出一种安全更新数据的方法,因为如果我(例如)创建 update.php 然后使用 GET 发送数据,任何人都可以去 update.php?username=[not their username]&email=[some email ] 等并更改任何其他人的记录。POST 似乎也不适用于 mod_rewrite。谁能给我任何建议?

TL;DR:启用 mod_rewrite 后,如何安全地将信息从表单发送到数据库?

4

1 回答 1

2
  • GET 与 POST 在这里无关紧要,两者都比另一个更能保护任何东西
  • GET 与 POST 只是语义上的,并且对客户端有某些不同的行为规范,它不是一种安全措施
  • mod_rewrite 适用于 POST 请求
  • 所有 mod_rewrite 都会拦截和修改响应 URL 执行的物理文件,仅此而已

你想要的是一个认证和权限系统。要求用户登录。建立用户可以和不能做什么或访问的权限。检查每个请求是否允许用户执行他将要执行的操作。如果他 POST 到update.php?username=foobar,请检查他是否被允许更改有关用户名的任何内容foobar并拒绝他的请求。

于 2013-07-25T07:49:23.927 回答