:::

4-6-1 加強資料保護

您沒有觀看影片的權限

您沒有觀看影片的權限

請先登入,登入後,確認您的權限後,即可觀看影片。

  1. 看起來很OK?但其實危險重重,例如,修改報名時,只要在網址加入 id ,就有可能可以看到他人的資訊
  2. 加入第二個參數 $uid,若該參數有值時,會同時加入篩選條件,確保只會篩出原始報名者資料 影片中資料庫大小寫不正確,一律改為小寫 prefix("tad_signup_data")
    //以流水號取得某筆資料
    public static function get($id = '', $uid = '')
    {
        global $xoopsDB;
    
        if (empty($id)) {
            return;
        }
    
        $and_uid = $uid ? "and `uid`='$uid'" : '';
    
        $sql = "select * from `" . $xoopsDB->prefix("tad_signup_data") . "`
        where `id` = '{$id}' $and_uid";
        $result = $xoopsDB->query($sql) or Utility::web_error($sql, __FILE__, __LINE__);
        $data = $xoopsDB->fetchArray($result);
        return $data;
    }

     

  3. 搜尋其他地方有用到 get() 的地方,看是否要加入,例如修改 create() 時,若不是管理員,就強制只能讀取自己的資料,讀不到資料就轉走。 這部份錄影時沒做完整,請務必加上最後的轉向動作
    //編輯表單
    public static function create($action_id, $id = '')
    {
        global $xoopsTpl, $xoopsUser;
    
        $uid = $_SESSION['tad_signup_adm'] ? null : $xoopsUser->uid();
    
        //抓取預設值
        $db_values = empty($id) ? [] : self::get($id, $uid);
        if ($id and empty($db_values)) {
            redirect_header($_SERVER['PHP_SELF'] . "?id={$action_id}", 3, "查無報名無資料,無法修改");
        }
    
        /*--- 略 ---*/
    }

     

  4. 還有 show() 也一樣的處理
    //以流水號秀出某筆資料內容
    public static function show($id = '')
    {
        global $xoopsDB, $xoopsTpl, $xoopsUser;
    
        if (empty($id)) {
            return;
        }
    
        $id = (int) $id;
        $uid = $_SESSION['tad_signup_adm'] ? null : $xoopsUser->uid();
        $data = self::get($id, $uid);
        if (empty($data)) {
            redirect_header($_SERVER['PHP_SELF'], 3, "查無報名無資料,無法觀看");
        }
        /*---略---*/
    }

     

link to https://github.com/tadlearn/tad_signup/commit/968f88edef46ec91797659cfbb5162a643683ab2 \


:::

搜尋

QR Code 區塊

https%3A%2F%2Fwww.tad0616.net%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D48%26tbdsn%3D1673

書籍目錄

展開 | 闔起

線上使用者

117人線上 (4人在瀏覽線上書籍)

會員: 0

訪客: 117

更多…