數據越權訪問心得

數據越權訪問,又稱BAC( Broken Access Control )。屬於一種常見錯誤, 危害性極大。 具體情形以下:用戶A經過B平臺購買C買家的貨物。對於用戶A的地址,A,B,C三家均可以看到。他的方式是客戶端經過調用後臺的一個服務獲得買家A的信息,通常會用相似這樣一個方法get*ById(String id)。若是這個id被某些別有用心的人獲取而且改掉,那麼,他基本就能夠獲得全部的客戶信息了。 改正的方法也很容易,就是對於客戶端請求的id以及請求人的身份作對比,若是不一致,則不作查詢。 可是問題在於,這個方法被多個地方調用,那麼咱們就要在多個地方進行修改,此時就要考慮到多個開發人員的狀況,你不能保證每一個人都會作這個判斷。並且,這種細粒度的方法他的使用場景很是多,根據方法來控制,是控制不住的。那麼咱們就須要從新審視get*ById這個api,對於平臺運營商系統的使用場景是沒有問題的,可是對於平臺商家後臺和消費者系統,咱們須要的是get*ByIdAndMerchantId和getMy*ById的這種API。 可是,即便咱們增長了這兩種API,依然不能很好的控制程序員來依法使用這兩個API,由於get*ById實在是太好用了,某些偷懶的程序員或者是後來的不知情的人必定會優先選擇這個方法。 一個在實際中採起的解決方案是:把這三個API封裝到不一樣的服務(Service)或包(Package)中,並在不一樣的項目中設置僅對本身的場景可見。 在系分時,系分人員要充分注意到不一樣的service或者package的做用,讓開發者即便不清楚相關的安全考量和安全開發知識,依然可以開發出符合標準的應用
相關文章
相關標籤/搜索