jvm註解 @CallerSensitive的用處

這個註解是爲了堵住漏洞用的。曾經有黑客通過構造雙重反射來提升權限,原理是當時反射只檢查固定深度的調用者的類,看它有沒有特權,例如固定看兩層的調用者(getCallerClass(2))。如果我的類本來沒足夠權限羣訪問某些信息,那我就可以通過雙重反射去達到目的:反射相關的類是有很高權限的,而在 我->反射1->反射2 這樣的調用鏈上,反射2檢查權限時看到的是反射1的類,這就被欺騙了,導致安全漏洞。使用CallerSensitive後,getCallerClass不再用固定深度去尋找actual caller(“我”),而是把所有跟反射相關的接口方法都標註上CallerSensitive,搜索時凡看到該註解都直接跳過,這樣就有效解決了前面舉例的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章