駭客 - Python模組安全權限
伊谢尔伦
伊谢尔伦 2017-06-12 09:25:57
0
1
691

現在需要開發一個外掛系統。插件系統所有人都可以寫PY檔案即可載入。但是需要引入主程式的庫 例如

# test.py
from lib.function import *
...

如何防止使用者存取lib裡面的其他方法或變數呢?

all 如果加上名稱,我主程式需要呼叫所有*的話,可以嗎?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(1)
学霸

python並沒有真正的私有變數或方法, 所以基本上是無法阻止別人存取另一個模組的方法或變數, 但是如果使用者是透過from lib.function import *, 那麼我們可以透過__all__ 屬性去設定*能被import指定的變數或方法, 例如:

cat abc.py
__all__ = ['bar']
waz = 5
bar = 10
def baz(): return 'baz'

cat b2.py
from abc import *
print(dir())

# 输出:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'bar']

可以看到在b2.py的輸出, 並沒有barbaz, 所以我們可以通過這種方式, 來做一個簡單的控制, 當然下劃線開頭的私有變量也限制了, 但這種限制對import abc這種引入方式無效

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板