簡體   English   中英

用戶登錄安全性。 會話vs Mysql活動用戶表

[英]User login security. Session vs Mysql active users table

我正在考慮安全問題,提出了一些問題,閱讀了一些文章.....很難用完全不同的方法從所有這些文章中獲取所有信息,然后將它們放在一個地方以具有正常的用戶登錄和用戶檢查系統。

今天,我讀到了有關具有活動用戶列表的mysql表而不是存儲會話的信息。 據我了解,會話太難保護,而另一方面,我認為mysql表很容易制作。

例如,用戶登錄。不必進行一些“用戶”會話,只需將新數據插入active_users_table並在其中添加用戶ip。

在所有頁面上,我都可以向客戶端請求ip,然后轉到mysql表,檢查該ip用戶是否已登錄,如果是,請檢查用戶具有哪些權限並給予相應的訪問權限。

問題1.這很簡單嗎? 更容易使會話安全嗎?

問題2.如果該系統足夠好,因此我可以停止使用該方法進行研究並構建站點,那么問題是如何理解用戶是否仍處於活動狀態? 如果他按“注銷”按鈕ok,我將注銷他並從表中刪除他的記錄。 但是,如果他重新啟動PC或其他東西? 我怎么知道什么時候可以銷毀記錄?

問題3.當我使用數據庫時, 有人告訴我使用mysqli而不是mysql命令。 它們是一樣的,所以我只需要在所有命令中添加“ i”就可以了,或者mysqli有點不同,需要一些研究嗎? 還有為什么更好呢? 為什么我不能使用我習慣的普通mysql命令?

不,不是那么簡單。 (如果就這么簡單,我們會那樣做:)

您需要能夠唯一標識用戶的內容。 IP不會。 而且,它必須是不可預測的,難以劫持的,不顯示在服務器日志等中的,等等。

當前接受的標准是:使用長的,高熵的隨機令牌並將其存儲在cookie中。
對於PHP,請使用PHP的內置會話功能。

安全是一個非常微妙的專業領域,最好的建議是: 不要發明自己的安全方案。

您可以將會話數據存儲在數據庫中而不是文件中,沒問題。 它甚至可能增加整體安全性。 但是話又說回來,它什么也做不了。 (取決於可能的因素)

會話可以並且通常存儲在數據庫中。 因此,沒有會話與數據庫。 會話是在HTTP請求之間保留信息的一種方式,因為HTTP是無狀態協議。

會話和您的方法之間的區別在於,會話依賴於cookie,而您依賴於IP。 但是可以有多個具有相同IP的用戶。 因此,您的方法不安全,會話更安全。

從安全的角度來看,提供了該數據庫而不是默認的文件保存機制,因為在共享環境中,其他用戶可以讀取會話文件。 此外,如果您有很多活動用戶,則數據庫中的會話可以更輕松地擴展。

您應該注意會話劫持和會話固定攻擊。 這些都不與您存儲會話數據的方式有關。

問題3與會議無關,應該提出自己的問題。 但是mysqli只是更新的擴展,並且支持更多功能。 在大多數情況下,它的用法與mysql函數完全相同。

暫無
暫無

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

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