2011-07-13 82 views
0

用戶可以查看會話中保存的數據嗎?例如,如果用戶登錄到網站,並且他的user_id已保存在會話中,以便用戶保持登錄狀態,只要他的ID在會話中可用即可。他能查看會話數據嗎?如果他能查看,這是否不好? 對不起,如果我的問題聽起來很愚蠢,但我有一個問題,我試圖解決一整天:會話數據可見;可以嗎?

我使用Flash上​​傳,當我發送數據到另一頁時,Flash上​​傳失去了數據,我無法從會話中獲取數據,正如我在my previous question中詢問的那樣。由於發送session_id沒有解決我的問題,所以我想通過user_id與其他數據一起存儲在會話中,當後端腳本獲取user_id時,它將其存儲在會話中,以便用戶保持登錄狀態。

'scriptData'  : {'uid': '<?=$this->session->userdata('uid')?>'}, 

,並在後端腳本,我可以得到user_id通過:

$uid = $_REQUEST['sid']; 
var_dump($uid); 

現在,因爲我送的 例如,我可以用JavaScript(uploadify語法)發送user_id與JavaScript的user_id後端腳本,用戶可以很容易地看到他的user_id正在通過。我懷疑它是否非常不安全?用戶可以以某種方式更改用戶標識併發送它(並以另一用戶身份登錄?)是否有可能?

其他可能的方法是通過session_id而不是用戶ID(我現在還不能這樣做),發送session_id比發送更安全user_id

+0

這裏的問題是沒有看到用戶ID,它可以改變它。 – bzlm

+0

安全是相對的,並且總是取決於您需要達到的級別。只要數據是隻讀的,例如,泄露信息並不總是不安全的。另一方面,如果知道用戶ID允許創建新用戶或訪問現有帳戶,則會遇到問題。對於你的情況,不要自己開發新的東西,但要更好地理解現有的機制,並使用經過驗證的工作和聲音的代碼。並且不要試圖做一些不可靠的事情。 – hakre

回答

3

你永遠不應該發送user_id。這將是你的應用程序中的一個巨大的安全漏洞,因爲用戶可以將其更改爲侵入其他用戶帳戶。

你應該送session_id,然後做這個服務器端:

<?php session_id($_GET['session_id']); ?> 

這將啓動會話。

是的,在會話中存儲數據是安全的。

http://php.net/manual/en/function.session-id.php

0

不,他們無法查看存儲在會話中的數據。

會話ID僅指服務器上的會話數據,因此如果您傳遞了session_id,則存儲在會話中的數據是安全的。

請注意,您不應該公開user_id,因爲它提供了更改它的機會。

1

如果user_id是在任何可預見的,那麼,用戶可以查看和更改他們的USER_ID,這將讓你的網站認爲這是一個不同的用戶。然後他們可以訪問他們正在冒充的用戶的信息。

這可能是一個重大的用戶安全漏洞。

相關問題