Re: [問題] Java實作security的極限
: ※ 發信站: 批踢踢實業坊(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
03/14 10:50, 1F
→
03/14 10:51, , 2F
03/14 10:51, 2F
→
03/14 10:51, , 3F
03/14 10:51, 3F
→
03/14 10:52, , 4F
03/14 10:52, 4F
→
03/14 10:53, , 5F
03/14 10:53, 5F
→
03/14 10:53, , 6F
03/14 10:53, 6F
→
03/14 10:54, , 7F
03/14 10:54, 7F
→
03/14 23:38, , 8F
03/14 23:38, 8F
→
03/14 23:40, , 9F
03/14 23:40, 9F
→
03/15 10:00, , 10F
03/15 10:00, 10F
推
03/29 22:51, , 11F
03/29 22:51, 11F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):