我有一個Web應用程序,我打算給每個客戶端自己的子域,如client1.myapp.com,client2.myapp.com等。當用戶登錄時,我將它們存儲會話變量中的用戶標識,如$_SESSION['user'] = 4;
當設置了$_SESSION['user']
時,用戶已登錄並可以訪問該應用程序。由於用戶ID在每個客戶端中都是唯一的,因此我需要一種方法來防止用戶訪問其他客戶端的子域。我考慮過使用會話cookie,但後來我發現cookies可能會被黑客入侵。現在我正在考慮爲每個客戶端分配一個唯一的客戶端ID,並使用$_SESSION[$clientID]['user']
而不是$_SESSION['user']
。這是解決問題的安全方法嗎?我還有什麼其他選擇?如何限制用戶到他們的子域
回答
您的$clientID
方法沒有任何問題。
如果你想要看起來,你可以做一些事情,如使用session_set_cookie_params,所以同樣的PHPSESSID
cookie可以被所有的域和子域訪問。這有其好處,特別是如果您的中央登錄頁面需要檢測用戶是否登錄了特定域或子域。或者,如果您希望允許用戶同時從所有子域註銷,或者您想創建可訪問所有子域的管理帳戶。
由於所有子域的會話在服務器上的同一目錄中都是stored,所以即使Cookie綁定到特定的子域,也不要相信正在發送的會話標識。
一個解決方案可能是這樣的:ini_set(session.save_path, "/path/to/your/folder/$clientid")
然後你會有一個專用於每個客戶端存儲會話的唯一目錄。這種方法的好處是您的$_SESSION
不會包含與另一個子域相關的信息。
您還可以利用sesssion_name而不是PHPSESSID
您可以使用client1或client2來清除會話屬於哪個客戶端。 例如client2=8d72edf35377a27388cb;client8=b47277bc8e3d4a5f
然後PHP可以讀取這個cookie並知道會話存在的客戶端。
你也可以使用上述所有的組合,無論你爲什麼工作。
在此處查看會話相關功能:http://php.net/manual/en/book.session.php
此處的會話相關設置:http://php.net/manual/en/session.configuration.php
嘗試類似這樣的東西。我希望這將有所幫助。
當用戶登錄時,存儲其子域,如會話變量:
$_SESSION['user_subdomain'] = 'client1.myapp.com';
當$_SESSION['user']
和$_SESSION['user_subdomain']
設置,用戶登錄並訪問應用程序然後就檢查當前訪問應用程序的子域等於或者不是$_SESSION['user_subdomain']
。
通過使用這種方式,您可以將客戶端重定向到其正確應用程序的子域,如果他試圖訪問其他客戶端的子域。通過這種方式,您可以阻止用戶訪問其他客戶的子域。
- 1. 我如何限制其他域的用戶除了** abc.com **
- 2. 限制用戶到他們的個人資料頁面
- 3. Linux shell將sftp用戶限制到他們的主目錄?
- 4. 創建SQL用戶,並限制他們的權限
- 5. 限制:子域
- 6. 如何限制用戶訪問子域名
- 7. 如何限制訂閱者到一個自定義帖子類型,並抑制他們編輯其他帖子
- 8. django - 限制用戶只編輯他們自己的信息
- 9. open_basedir的限制和子域
- 10. 限制用戶到子目錄
- 11. 如何將用戶登錄路由到他們的帳戶?
- 12. 如何限制桶到用戶
- 13. 如何刪除領域對象與他們的子女關係?
- 14. OpenERP的,如何使用域限制
- 15. 如何限制變量的作用域
- 16. 如何限制用戶與UIView內部區域的交互?
- 17. 如何修復max_file_uploads限制增加我們的託管域
- 18. 我設置的子域,但如果用戶切換子域其他用戶的帳戶,它是不安全的
- 19. 控制頁面用戶被引導到他們登錄到他們的賬戶後
- 20. 如何限制當前登錄的用戶只能看到屬於他們的產品?
- 21. 如何強制用戶將他們的簽入連接到當前的衝刺?
- 22. 如何將域映射到其他域的子文件夾?
- 23. 如何限制用戶訪問他自己的信息
- 24. 如何限制用戶註冊僅限Firebase中的某些域名?
- 25. TOMCAT + SPNEGO如何再次限制區域用戶組
- 26. 如何限制普通用戶訪問管理區域?
- 27. 如何當用戶瀏覽到其他頁面的一個域
- 28. Flex Viewstack的孩子們,如果你看不到他們,他們是否存在?
- 29. Liferay 6.0.5:限制用戶只能登錄到他的組織
- 30. 如何重定向子域到其他域