文章详情页
黑客 - Python模块安全权限
浏览:213日期: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. angular.js - ng-grid 和tabset一起用时,grid width默认特别小2. 能用Nginx服务小型购物网站的web吗?3. android - 美团筛选处筛选条件停靠+条件点击滑动到顶部。4. python for循环中的函数只能运行一次?5. python - pyspider爬取了接近1G的数据,无法导出csv?6. javascript - Vue.js2.0不能使用debounce后大伙一般是如何解决延迟请求的问题的呢。7. html - 爬虫时出现“DNS lookup failed”,打开网页却没问题,这是什么情况?8. python的文件读写问题?9. html5 - 在一个页面中 初始了两个swiper 不知道哪里错了 一直不对10. 请问是对象还是数组
排行榜
