Python模块安全权限

发布于 2022-09-05 02:41:09 字数 211 浏览 29 评论 0

现在需要开发一个插件系统。 插件系统所有人都可以编写PY文件即可加载。但是需要引入主程序的库 比如

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

如何防止用户访问lib里面的其他方法或者变量呢?

all 如果加上名称,我主程序需要调用所有*的话,可以吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

去了角落 2022-09-12 02:41:09

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这种引入方式无效

凡尘雨 2022-09-12 02:41:09

python本身如楼上所说没有很严格的私有限制..你可以尝试写个简单的沙箱来控制用户行为和加载类库

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文