鍍金池/ 問答/PHP  HTML/ 防止其他人通過用戶的url訪問用戶私人數(shù)據(jù)

防止其他人通過用戶的url訪問用戶私人數(shù)據(jù)

1,數(shù)據(jù)是用戶私人的,只能被用戶自己查看,如果防止其他人通過url訪問數(shù)據(jù)?

2,訪問都需要登陸操作,session中放入userId, 記錄中放入userId,每次訪問的時候根據(jù)url中記錄id 得到數(shù)據(jù),根據(jù)數(shù)據(jù)中的userId 和session中的userId 是否匹配判斷是否是用戶本人訪問??
但是這樣就會導致需要查詢數(shù)據(jù)庫之后才可以得知結果

3,url中放入userId,根據(jù)url中的usrId和session中保存的userId 進行匹配判斷是否是本人訪問,
這樣會將userId暴漏在url中

各位都是怎么做的

回答
編輯回答
款爺

和csrf非常類似

這個方法 可以不用查詢數(shù)據(jù)庫。
在路由地方增加一個中間件,把需要驗證的路由全部走這個中間件。
每次用戶登錄的時候生成一個比較長的hash碼(保證每個用戶不重復) session 保存這個 hash
每次請求的時候驗證這個 hash 就好了。
每次登錄都不同,不純在泄漏問題

2018年5月10日 16:52
編輯回答
愛是癌

1、userid不要放到url中

2、采用token,jwt加時間戳,放到每次請求的header中

2018年7月13日 23:39
編輯回答
笨笨噠

url做成通用的,數(shù)據(jù)請求需要用戶自己主動觸發(fā)

2017年3月13日 00:50
編輯回答
大濕胸

一個url就能訪問到別人的私人數(shù)據(jù),只能說明你做的東西太那個啥了。你看看別人都是咋開發(fā)的,同樣的URL只可以訪問已登錄用戶自己的數(shù)據(jù)。對于保密的數(shù)據(jù)不僅不能讓其他人隨意的通過URL訪問,還得防止爬蟲抓取。河南農(nóng)業(yè)大學的系統(tǒng)就存在類似的漏洞,所以既然是隱私數(shù)據(jù),那么保密工作不僅僅是一個URL的事兒,服務器配置各方面都有。就像上述河南農(nóng)業(yè)大學的學生私人信息其實就是服務器配置不當,那么后臺系統(tǒng)層面該做的就是授權與鑒權。所以雖然URL一樣,但只有授權過的用戶才能讓他看

2018年1月1日 06:30
編輯回答
初念

可以使用redis替數(shù)據(jù)庫做用戶驗證

2018年1月20日 03:02
編輯回答
涼薄

我明白你的意思,我的想法是這樣的。
每次用戶用自己的 url 訪問服務器去拿數(shù)據(jù),服務器會用一種算法算出一個種子,然后發(fā)送給用戶登陸時所用的瀏覽器的緩存中,當然有時間限制。只是這個種子必須要存在數(shù)據(jù)庫中

2018年5月25日 10:54
編輯回答
懶豬

方法1.使用session,如果seesion直接throw
方法2.生成token,存在redis或者其它緩存機制,同是你也可以存放一些,比如uid,權限,請求限制

2017年12月8日 16:05
編輯回答
胭脂淚

既然是私人數(shù)據(jù),那就不需要在路由中體現(xiàn) userId,登錄之后,一切數(shù)據(jù)依據(jù)SESSION中的userId去查詢,怎么可能會出現(xiàn)訪問到其它用戶的數(shù)據(jù)呢

2018年9月3日 02:14
編輯回答
萌面人

每個頁面肯定會有請求,請求時候會帶上用戶信息,用戶登錄后才會有用戶信息。所以只要判斷是否可以拿得到用戶信息就知道既可以了,拿不到用戶信息就讓用戶去登陸就好了!

2017年4月3日 18:16
編輯回答
小眼睛

用戶登錄成功后保存相關數(shù)據(jù)到session,從session里取出用戶的ID,每次查詢條件都加上該id。

2018年1月5日 14:05