私たちはCodeIgniterを使用しているウェブサイトを持っています。 Facebook SDKを使用してトークンをセッション変数に接続して保存します。 AJAXコードで呼び出され、データベースにエントリを作成するコントローラ関数があります。しかし、エントリを作成するには、セッション変数が有効である必要があります。ハッカーが外部からユーザーセッションにアクセスするのを防ぐには?
最近、誰かが私たちを攻撃し、彼が有効なセッションを持っているとふりかえり、これらの機能を呼び出し、当社のウェブサイトに多数のデータベースエントリを作成する方法を発見しました。私たちは今、ウェブサイトを閉鎖して、それを防ぐために何らかの変更を加えなければなりません。
私たちはPHPプログラマーではなく、私たちはC/C++プログラマーであり、その人がどのようにしたのか分かりません。彼はカールライブラリ7.43.0を使用したことを知っています。
コードを修正してください。ところで、私たちはHTTPSウェブサイトではありません。ここで
はCodeIgniterのためのセッション構成である:ここで
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 1800;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 60;
$config['sess_regenerate_destroy'] = TRUE;
は、クッキーの設定です:ここで
$config['cookie_prefix'] = 'liftoffre_';
$config['cookie_domain'] = $domain;
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
は、私たちがデータベースにエントリを作成する前に、セッションを確認するために使用コードです:
public function create_offer()
{
if($this->session->userdata('token') != null)
{
$titre = "Nouvelle offre";
$data = array(
'userGraph' => $this->session->userdata('userData'),
'titre' => $titre
);
$this->load->view('nouvelle_offre', $data);
}
else
{
redirect('/main/');
}
}
public function ajouter_offre()
{
if($this->session->userdata('token') != null) {
$data = array(
'offre_departure_name' => $this->input->post('offre_departure_name', TRUE),
'offre_departure_adresse' => $this->input->post('offre_departure_adresse', TRUE),
'offre_departure_province' => $this->input->post('offre_departure_province', TRUE),
'offre_departure_city' => $this->input->post('offre_departure_city', TRUE),
'offre_arrival_name' => $this->input->post('offre_arrival_name', TRUE),
'offre_arrival_adresse' => $this->input->post('offre_arrival_adresse', TRUE),
'offre_arrival_province' => $this->input->post('offre_arrival_province', TRUE),
'offre_arrival_city' => $this->input->post('offre_arrival_city', TRUE),
'offre_datetime' => $this->input->post('offre_datetime', TRUE),
'offre_price' => $this->input->post('offre_price', TRUE),
'offre_seats_number' => $this->input->post('offre_seats_number', TRUE),
'offre_userid' => $this->input->post('offre_userid', TRUE),
'offre_commentaire' => $this->input->post('offre_commentaire', TRUE),
);
$this->load->model('Datasource');
$this->Datasource->add_offer($data);
}
else
{
redirect('/main/');
}
}
これらの2つの機能は、POSTメソッドとcalli domain.com/index.php/controller/functionのようなリンク。
ここで誰かが私たちを助けるためにどのようにサーバー
209.222.7.236 - - [27/Jun/2016:06:50:33 -0700] "POST /index.php/nouvelleoffre/ajouter_offre/ HTTP/1.1" 200 - "-" "curl/7.43.0"
からログを知っていますか?
(強力な暗号化キーのパスワードを設定することを忘れないでください)暗号化キーを設定し、あなたがそれを保存する前に、すべてのセッション値を暗号化することをお勧めします、あなたは使いますかセッションクッキー?そうした場合は、リクエストごとにセッションIDを更新しますか? https://www.owasp.org/index.php/Session_fixation – Jojo01
私たちはCodeIgniterが私たちに与える機能を使用しているので、作業を行うべきだと思っていましたが、私はその情報をどのように確認できますか? –
しかし、ハッカーが既存のセッションを使用した、または彼はそれに別のトリックを使用しました。 –