簡體   English   中英

PHP MVC用戶管理

[英]PHP MVC User Management

我正在創建自己的 PHP MVC 框架並希望管理用戶,為此我有一個動態的 url,它是使用如下所示的表單操作創建的:

<form action="users/delete/<?=$user->id?>" method="post">
     <input type="hidden" name="_method" value="delete-submit" name="delete-submit">
     <button type="submit" class="btn bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded">Delete</button>
</form>

我不知道這是否是正確的方法,所以我在問。 這將重定向到 /users/delete/$id 但我是否需要像這樣處理表單請求:

    if(!empty($_POST['delete-submit'])) {
            $user = $this->model("user");
            $user->deleteUser($value);
            header("Location:".ROUTE."home/users");
        }

或者我可以只使用 url 並忽略POST請求。

我不會指望$_POST['delete-submit']變量,因為例如如果你使用像 Postman 這樣的工具,你可以手動創建這樣的請求並刪除任何用戶,考慮到你只是檢查$_POST['delete-submit']是否設置。

所以如果你要刪除用戶,應該有一些授權機制。

  1. 用於刪除用戶的 users/delete 路由 -> 正確
  2. 然后你通過$_SESSION['UserId']檢查哪個用戶發出這樣的請求,如果他被授權/有這樣的權限,你刪除用戶..

喜歡...

function deleteUser($userId) {
    if(user::hasDeletePermission($_SESSION['UserId']) {
         'delete the user';
    }
}

如果你已經有了這樣的基於授權的機制並且只需要額外檢查,用戶是否真的提交/點擊了那個按鈕,例如 CSRF 攻擊,那么我會創建令牌(一些帶有數字和字符的隨機字符串)並保存到用戶的 session ,它將作為隱藏輸入元素的值嵌入到表單中。

喜歡:

<form method="POST" action="users/delete">
    <input type="hidden" name="csrfToken" value="token"/>
</form>

 function deleteUser($userId) {
    if($_POST['csrfToken'] === $_SESSION['csrfToken'] && user::hasDeletePermission($_SESSION['UserId']) {
         'delete the user';
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM