0

私はすでに、オフサイトのペイパルバスケットを使用して衣料品やジュエリーを販売する会社のサイトを作成しました。非常に基本的な特注のCMSがあり、現時点ではサイト所有者自身のみがログインできます。ログインしている間、彼は製品の追加/削除/編集、およびサイトのフロントページでの基本的なニュースフィードの管理を行うことができます。

管理者以外のユーザーが登録できるようにサイトを拡張し、ニュースフィードにコメントを投稿したり、フォーラムなどに投稿したりできるようにしたいのですが、望まない管理者が実行できるものにアクセスできるようにします。

私の最初の考えは、次のようなものを使用することでした。

public function validate_user()
{
    $username = trim($this->input->post('username'));
    $password = trim($this->input->post('password'));
    $password_md5 = md5($password);

    //query database searching for user
    $this->db->where('username', $username);
    $query = $this->db->get('users');

    //if user found in database, set session info
    if ($query->num_rows() == 1) {
        $result = $query->row();
        $output['username'] = TRUE;

        //check if password correct
        if ($result->password == $password_md5) {
            $output['password'] = TRUE;
            if ($result->admin) {
                $admin = TRUE;
            } else {
                $admin = FALSE;
            }

            //set session data for user including validated status
            $data = array(
                'id' => $result->id,
                'username' => $result->username,
                'fname' => $result->fname,
                'lname' => $result->lname,
                'admin' => $admin,
                'validated' => TRUE
            );
            $this->session->set_userdata($data);
        } else {
            $output['password'] = FALSE;
        }
    } else {
        $output['username'] = FALSE;
    }
    return $output;
}

ブール値の管理者ステータス値をセッションデータに格納することは、セキュリティ上の理由から悪い考えであり、悪用される可能性があるという事実を認識しています。これで正しい方向に進んでいるかどうかについてのアドバイスと、上記のようなシステムを実現する方法についての提案をいただければ幸いです。

前もって感謝します。

4

1 に答える 1

1
  • 最初にcodeigniterフォーム検証を使用します-データベースに送信する前に正しいデータがあることを確認してください
  • checkユーザー名を独自のメソッドに分割する価値があると思います。それがtrueを返す場合は、パスワードのチェックなどを呼び出します。これにより、後でさらに柔軟になります。
  • XSSがフォーム出力をクリーンアップする習慣を身に付けてみてください。フィールド名の後にTRUEを付けてください。

    $username = trim($this->input->post('username', TRUE));
    
  • 電子メールでパスワードをリセットするなどの操作を行う場合は、IonAuthhttps://github.com/benedmunds/CodeIgniter-Ion-Authを確認して ください。
于 2012-11-23T21:45:50.147 に答える