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

各ページは、header.php、controlpanel.php、footer.php などからなる /controlpanel でまとめられています。

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]/ などに短縮されるという仕組みになっています。

controlpanel.php には、ページの読み込み時にデータベースからの情報が読み込まれるフォームがあり、データを更新するための送信ボタンがあります。(たとえば) update.php を作成して GET でデータを送信すると、だれでも update.php?username=[自分のユーザー名ではない]&email=[メール] など、他のユーザーのレコードを変更します。POST は mod_rewrite でも機能しないようです。誰でもアドバイスをもらえますか?

TL;DR: mod_rewrite が有効になっているときに、フォームからデータベースに情報を安全に送信するにはどうすればよいですか?

4

1 に答える 1

2
  • ここでは GET と POST は関係ありません。
  • GET と POST は意味論的なものにすぎず、クライアントに対して特定の異なる動作仕様があります。これはセキュリティ対策ではありません
  • mod_rewrite は POST リクエストで問題なく動作します
  • すべての mod_rewrite は、URL に応答して実行される物理ファイルをインターセプトして変更します。それ以上でもそれ以下でもありません。

必要なのは、認証と許可のシステムです。ユーザーにログインを要求します。ユーザーができること、できないこと、またはアクセスできないことに関する権限を確立します。ユーザーがしようとしていることが許可されているかどうか、すべてのリクエストを確認します。彼が に投稿した場合はupdate.php?username=foobar、ユーザー名に関する変更が許可されているかどうかを確認し、許可されてfoobarいない場合は要求を拒否します。

于 2013-07-25T07:49:23.927 に答える