回溯中的条带局部变量

sensitive-variables的Python项目详细描述


敏感的_变量-删除回溯中的局部变量

Build StatusPyPi page link -- version

sensitive_variables是一个可以应用于 防止调试工具读取某些局部变量,如 Django crash reporterSentry

与django的sensitive_variables不同,它独立于web框架 您使用并且也不依赖调试工具来了解decorator 为了工作。

fromsentry_sdkimportinitfromsensitive_variablesimportsensitive_variablesinit()@sensitive_variables('password')deflogin_user(username,password):print("Logging in "+username+" with "+password)# TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'login_user(None,"secret123")

结果:

Picture of Sentry's traceback view where each frame contains local variables. The password variable contains a placeholder instead of the actual value.

它是如何工作的?

当修饰函数抛出异常时,sensitive_variables遍历回溯,从frame.f_locals中删除敏感数据并重新引发异常。

这通常不成问题,因为刚刚抛出异常的函数不太可能仍然使用其局部变量。

为什么我要在Django的装饰上用这个?

django有一个decorator,也称为sensitive_variables,这个包的灵感来自于这个decorator。它向包含变量名的函数添加一个属性。

调试工具必须了解这个属性并尊重它。对于django以外的任何国家来说,情况都不太可能是这样。

这个装饰器总是可以工作的,因为它实际上修改了您的本地。

为什么我要用这个来代替哨兵的数据清理选项?

  • 此装饰器不会将敏感数据的配置耦合到特定的崩溃报告工具。

  • decorator的行为很容易进行单元测试(参见tests/文件夹)。

为什么我不用这个?

这个decorator本质上要求为每个python实现定制代码。目前这只针对cpython 2.7、cpython 3.7和pypy2.7进行测试。

许可证

根据麻省理工学院授权,请参见LICENSE

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将一个节点拖到另一个不运行JavaFX的节点中   java如何在spring boot中创建完全自定义的查询   java Arraylist和ArrayListBlockingQueue之间的区别是什么?   java Weblogic会中断长时间运行的线程吗   java如何调用displayAd()方法?   使用数组在两个组之间进行java IPL匹配   java如何在Eclipse中的org下创建测试套件。朱尼特   java获取屏幕上任意点的鼠标坐标   正则表达式需要java正则表达式方面的帮助   如何使用Java获取Ram大小和硬盘大小?   java如何将所需长度设置为数组中的整数?   安卓应用程序启动前的java程序已终止   swing设置要在Java代码中打印的页边距   迭代期间java故障安全迭代器的删除   java如何在main中调用方法,以便它们在同一行上输出?   编译Java:尝试播放mp3文件时出错   java如何使用Spring数据Rest在POST调用中保存嵌入对象   java JAXWS如何在端点外部注入SecurityContext