簡體   English   中英

如何保護傳遞和設置會話ID?

[英]How to secure pass and set session id?

我正在使用uploadify,並且腳本(使用adobe flash)會在請求上傳操作網址時創建新會話,而不是使用當前會話。 要解決這個問題,我需要提前傳遞會話ID。

有沒有辦法在沒有許可會話固定(劫持)的情況下這樣做?

以下是問題的一些詳細信息: 會話和uploadify

謝謝!

在您的腳本中創建一個臨時上傳會話(未經測試,但您可以獲得關於能夠擁有多個不同會話的觀點):

<?php
//normal session
session_start();
//store sessionid for retrieval
$oldsessionid = session_id();
if($_SESSION['logged_in']){ //or however you check for a valid user
    //stop old/normal session
    session_write_close();   
    //create a new sessionname
    $oldname = session_name('UPLOADSESSION');
    //create a new id (fixed here, you might want a random number/char combo:
    session_id('myuploadsessionid');
    //start the session
    session_start();
    $_SESSION['upload'] = true;
    $uploadid = session_id();
    //now you can use `'data: "artist="+$fi+"&UPLOADSESSION="'.$uploadid` in uploadify
    session_write_close();
}
//return to normal name
session_name($oldname);
//set old session id
session_id($oldsessionid);
//resume normal session
session_start();

因此,在您的接收腳本中:

<?php
session_name('UPLOADSESSION');
session_id($_POST['UPLOADSESSION']);
session_start();
if(isset($_SESSION['upload']) && $_SESSION['upload']){
   //accept files
   //invalidate session after this upload
   $_SESSION['upload'] = false;
}

用戶仍然會有2個cookie,並且可能已經修復了UPLOADSESSION,但是您不會將其用於上傳的任何其他內容,並且僅用於1次上傳(盡管您可能希望允許更多)。

或者,您可以只調用session_regenerate_id(); 上載后的第一個請求上(只需在上載$_SESSION設置一個標志)。

暫無
暫無

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

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