文章詳情頁
黑客 - Python模塊安全權限
瀏覽:174日期:2022-06-29 09:36:48
問題描述
現在需要開發一個插件系統。 插件系統所有人都可以編寫PY文件即可加載。但是需要引入主程序的庫 比如
# test.pyfrom lib.function import *...
如何防止用戶訪問lib里面的其他方法或者變量呢?
all 如果加上名稱,我主程序需要調用所有*的話,可以嗎?
問題解答
回答1:在python并沒有真正的私有變量或者方法, 所以基本上是無法阻止別人訪問另一個模塊的方法或者變量, 但是如果用戶是通過from lib.function import *, 那么我們可以通過__all__屬性去設置*能被import指定的變量或方法, 例如:
cat abc.py__all__ = [’bar’]waz = 5bar = 10def baz(): return ’baz’cat b2.pyfrom abc import *print(dir())# 輸出:[’__builtins__’, ’__doc__’, ’__file__’, ’__name__’, ’__package__’, ’bar’]
可以看到在b2.py的輸出, 并沒有bar和baz, 所以我們可以通過這種方式, 來做一個簡單的控制, 當然下劃線開頭的私有變量也限制了, 但這種限制對 import abc這種引入方式無效
相關文章:
1. javascript - 這不是對象字面量函數嗎?為什么要new初始化?2. sql語句 - mysql中關聯表查詢問題3. javascript - 如何將一個div始終固定在某個位置;無論屏幕和分辨率怎么變化;div位置始終不變4. html5 - 有可以一次性把所有 css外部樣式轉為html標簽內style=" "的方法嗎?5. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風格檢查怎么辦。。。6. html - vue項目中用到了elementUI問題7. javascript - 有什么比較好的網頁版shell前端組件?8. javascript - iframe 為什么加載網頁的時候滾動條這樣顯示?9. javascript - [js]為什么畫布里不出現圖片呢?在線等10. javascript - 原生canvas中如何獲取到觸摸事件的canvas內坐標?
排行榜
