繁体   English   中英

使用mod_rewrite更新站点上数据库的最安全方法

[英]Most secure way to update database on a site using mod_rewrite

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

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 = [不是他们的用户名]&email = [some email ]等,并改变任何人的elses记录。 POST似乎也不适用于mod_rewrite。 任何人都可以给我任何建议吗?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM