留言板、權限管理問題


Posted by s103071049 on 2021-06-22

發現問題:權限管理問題

前端只是把按鈕藏起來,但真的無法編輯、刪除嗎 ? 透過直接存取 url 送資料給頁面,只是把它隱藏起來,不表示他改不到。

解決上述問題:
第一步、確定使用者的身分,決定他有無該權限。
第二步、修改 sql query

範例、delete_comment.php

  require_once('conn.php');
  $id = $_GET['id'];
  $username = $_SESSION['username'];
  if (empty($id)) {
    header('Location: main.php?errCode=1');
    die('資料未輸入齊全');
  }
  $sql ='update comments set is_deleted=1 where id=? and username=?';
  $stmt = $conn->prepare($sql);
  $stmt->bind_param("is",$id, $username);

範例、handle_update_comment.php

<?php
  require_once('conn.php');
  session_start();
  $content = $_POST['content'];
  if (empty($content)) {
    header('Location: update_comment.php?errCode=1&id='.$_POST['id']);
    die('資料未輸入完整');
  }
  $username = $_SESSION['username'];
  $id = $_POST['id'];
  $sql = 'update comments set content=? where id=? and username=?';
  $stmt = $conn->prepare($sql);
  $stmt->bind_param("sis", $content, $id, $username);
  $result = $stmt->execute();
  if (!$result) {
    die($conn->error);
  }
  header('Location: main.php');
?>

重點回顧

後端相關服務,權限管理必放心裡。顯示資料、刪除資料、修改資料,都要注意現在存取頁面的人是否有權限做這件事情。所以要加上權限檢查。


#PHP #SQL #Backend







Related Posts

[BE201] Express & Sequelize part 4

[BE201] Express & Sequelize part 4

[C#] PdfTemplate.iTextSharp.LGPLv2 產生Pdf 範例

[C#] PdfTemplate.iTextSharp.LGPLv2 產生Pdf 範例

鯨吞億萬

鯨吞億萬


Comments