Re: [問題] Java實作security的極限

看板java作者 (老子我最神)時間10年前 (2014/03/14 10:26), 編輯推噓1(1010)
留言11則, 3人參與, 最新討論串2/2 (看更多)
: ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 123.193.201.124 : → cyclone350:前面Order的例子是參考王者歸來的書 03/13 22:46 : → qrtt1:為什麼不檢查 order user == current user 就好? 03/14 08:22 : → cyclone350:我想問的就是如何有效果的達到這件事 03/14 08:58 : → qrtt1:session, token, https !? 03/14 09:32 q大所提的算是很實際的已知條件 前篇文章一開始有提及說,我們可以在每次set前都檢查User資料 current user資料包含從Session拿... 從https拿... 或是從DB撈值判斷, anyway,這種很實際的說法被我省略掉了, 因為不論如何,這種作法都必須在set前做檢查。 在DynamicProxy作法裡,set必須多傳一個參數進去,如何把參數傳進去 當然是可透過技術上的方式,例如在set前透過session抓到current user 抓到後再呼叫 setProductName("theName",user)。 應該說我要問的的確跟技術有點關係,但我想達到的目標比較像是設計方法 讓我分派下去的PG可以著重在商業邏輯撰寫,而不是在邏輯撰寫中夾雜 許多權限的分派,或記憶體控管之類等等.... 也就是問問看是否有更AOP的作法 其中JSR250我說"可以理解",意思是使用@RolesAllowed("ROLE_ADMIN") 背後做法可以去整個 applicationContext 或 webContainer 去拿到 current user 如何拿當然包刮 session, https, db ... 之類的 但是這個值是死的,我只能判斷 current user 是不是等於 ROLE_ADMIN 想要動態的方式如下 例如像是這樣 public class order { @Owner private String orderUser; private String productName; @AllowByOwner public void setOrderUser(String orderUser) { this.orderUser = orderUser; } @AllowByOwner private void setProductName(String productName) { this.productName = productName } } 可是這樣子要如何在背後程式實作,我是沒有想法的... 我可以從各種方式抓到 current user... 但是我不知道如何用哪種方式抓到 order user... 我也不確定透過反射機制是否可以達到這樣的做法 雖然我訂了 @Owner 介面,但是不知道如何實作 也許我沒理解q大所要回答的意思 主要還是在問更彈性的設計來達到security的效果。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.218.64.133

03/14 10:50, , 1F
order 建立時,會記錄下 order 與 user 對應關係。這樣就有
03/14 10:50, 1F

03/14 10:51, , 2F
http://ppt.cc/Sqil 這是spring對@RolesAllowed的實作
03/14 10:51, 2F

03/14 10:51, , 3F
查出 order owner 的方法了。檢查二者是否一致,是怕 owner
03/14 10:51, 3F

03/14 10:52, , 4F
把它的 url 給人(或被偷了)。做 token 驗證也可以防不合法
03/14 10:52, 4F

03/14 10:53, , 5F
的存取。不過,用 aop 或 filter 能做到查核操作 flow
03/14 10:53, 5F

03/14 10:53, , 6F
是不是屬於正常的情況。
03/14 10:53, 6F

03/14 10:54, , 7F
當然,可能我想太簡單,你想太複雜 :P 所以,搭不上線 orz
03/14 10:54, 7F

03/14 23:38, , 8F
我想我理解q大的意思了。我再去研究spring security
03/14 23:38, 8F

03/14 23:40, , 9F
有沒有功能符合這種需求。
03/14 23:40, 9F

03/15 10:00, , 10F
ps. 我只是一般而論,俺沒用 spring security 的經驗qq
03/15 10:00, 10F

03/29 22:51, , 11F
同意q大 session + user-order的mapping物件就可以解決
03/29 22:51, 11F
文章代碼(AID): #1J8cZOIB (java)
文章代碼(AID): #1J8cZOIB (java)