OS命令注入漏洞是一个十分严重,但是又十分容易被人忽视的一个问题。
今天遇到了一个非常奇怪的问题:在root用户下,python的sys path中包含了/usr/local
路径下的site-packages目录,但是在非root用户下,却没有包含,导致该用户执行程序异常,报:ModuleNotFoundError
。
init
外的属性是类属性,定义在init
内的是对象属性metaclass
是创造类,而不是实例化类的对象metaclass
中操作的属性都是类的属性metaclass
中通过super().__new__
创建新类metaclass
中通过super().__new__
创建的类包含了父类的属性,可以通过getattr
获取metaclass
中直接修改通过getattr
获取的父类属性,会更新到父类中,影响所有父类的子类metaclass
中,如果父类在init
外定义了某个属性,这个属性可以通过getattr
获取,且被继承到子类,否则通过getattr
获取的结果为None
metaclass
中,通过setattr
设置类的属性,只作用在当前类,不会修改父类的属性在两个节点之间或两个时刻之间需要同步有顺序的资源,例如防火墙策略,如何用比较小的代价来实现资源一致。
有一种思路是类似文本比较,用diff的方法来修改待同步一侧的资源。
需要使用的python的lib库:difflib
原因:traceback.print_exc()
函数打印异常信息时,会调用exception的__str__()
方法,如果该方法出现异常,就会出现该问题
排查:可以在exception的__str__
方法中加try except来捕获异常,打印具体的错误。
最近在项目中发现了一个历史遗留而又埋的很深的关于编码的坑,涉及到中文编码的转换。在分析的过程中再次回顾了一下有关编码的知识。python版本为2.7。