[英]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.